본문 바로가기
Java

[JAVA] 형 변환(Casting)

by ejxousiva(ἐξουσία) 2022. 9. 15.
반응형

자동 타입 변환(promotion)

  • 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생
long lVal = 100000000L float fVal = lVal; // 1.0E8f 
double dVal = lVal; // 1.0E8 
char cVal = 'A'; 
int iVal = cVal; // 65
  • 정수 연산은 모두 int 타입으로 자동 타입 변환 후 계산 됨
    • 정수 연산이 필요하면 int로 선언할 것
    • 자동 타입 변환을 하지 않아 성능 향상
byte x = 10; 
byte y = 20; 
byte z = x + y; // 컴파일 에러(byte z = int 30) 
int z = x + y; // 30 byte 
z = 10 + 20; // 30 (int로 변환 x)
  • 연산에서 피연산자끼리 타입이 다를 땐 큰 타입으로 자동 타입 변환
byte x = 10; 
int y = 20; 
long z = 30l; 
long xyz = x + y + z; // long으로 형변환 후 연산

강제 타입 변환(Casting)

  • 허용 범위가 큰 값을 허용 범위가 작은 타입에 강제로 저장
  • 실수 타입을 정수 타입으로 바꿀 때는 반드시 캐스팅 필요
double dVal = 3.14; 
int iVal = (int) dVal; // 3 
byte bVal = (byte)iVal; // 3
  • 문자열(String)을 기본 타입으로 변환할 때 parse 사용
String str = '10'; 
byte bVal = Byte.parseByte(str); 
int iVal = Int.parseInt(str); 
double dVal = Double.parseDouble(str); 
boolean boolVal = Boolean.parseBoolean(str);
  • 기본 타입을 문자열(String)으로 변환할 때 .valueOf 사용
    String str1 = String.valueOf(3.14); 
    String str2 = String.valueOf(true); 
    String str3 = String.valueOf(15);