자료형 변환(Type Casting)

2024. 10. 11. 11:24java

Type Casting(자료형 변환): 자료형을 바꾸는 개념

  • = (대입 연산자)를 기준으로 왼쪽  오른쪽이 같은 자료형이어야 함
    - 같은 자료형에 해당하는 리터럴값만 대입할 수 있음
    - 자료형이 다를 경우 ? == 값을 바꿔서 대입해야 함
  • 같은 자료형들끼리만 연산이 가능
    - 자료형이 다른데 연산이 하고싶을 경우 둘 중에 하나를 "형변환"해서 나머지 하나와 동일하게 맞춰야 함
  • 연산의 결과물도 동일한 자료형이어야 함
    - 1 + 1 = 2 (정수), 1.1 + 1.1 = 2.2 (실수)



 형변환의 종류

 1. 자동형변환(Promotion): 

  • 자동으로 형변환이 진행됨
  • 작은 크기의 자료형 -> 큰 크기의 자료형


 2. 강제형변환(Type Casting): 

  • 자동형변환이 이루어지지 않은 경우에 진행
  • ()을 통해서 진행

 [ 표현법 ] (바꿀자료형)값

                 (int)data

 

 

문자형 → 정수형 - → 실수형 순서대로 데이터 타입이 큼

 boolean : 1Byte
 char : 2Byte
 byte : 1Byte
 short : 1Byte
 int : 4Byte
 long : 8Byte
 float : 4Byte
 double : 8Byte

 자동형변환: 작은자료형 → 큰 자료형

 


 1. int(4Byte, 정수) → double(8Byte, 실수)

int iNum = 10;

System.out.println(iNum);

double dNum = (double)iNum;

System.out.println(dNum);

System.out.println(iNum);


 자동형변환
 2.int(4Byte, 정수) -> long(8Byte, 정수)

int iNum2 = 120;

long lNum = /*(long)*/iNum2;

System.out.println(lNum);


 3. long(8Byte, 정수) -> float(4Byte, 실수)  특이케이스
 정수가 실수로 변환될 때 큰 사이즈의 정수타입이 작은 사이즈의 실수타입으로 변환할 수 있음
 4Byte float형이 long형보다 표현할 수 있는 값의 범위가 더 크기 때문

long lNum2 = 1000L;

float fNum = lNum2;

 

System.out.println('a'); // a

System.out.println((int)'a'); // 97

System.out.println('a' + 3 ); // 100

System.out.println('a' + '3'); // 148

System.out.println((int)'3'); // 51

System.out.println('a' + "3"); // a3

 

System.out.println("비교연산자를 사용해보자~");

System.out.println(1 == 2); // false

System.out.println('a' == 'b'); // false

System.out.println(2 == (int)'2'); // false

System.out.println((int)'2');

System.out.println((char)2 == '2'); // false

System.out.println((int)'2' == '2');// true

}