[Java] 연산 시 주의해야할 자동 타입 변환과 강제 타입 변환하는 방법

김하밍·2023년 12월 14일
0

Java

목록 보기
18/46

강제 타입 변환(캐스팅:casting)

원래는 작은 타입에서 큰 타입으로만 자동 형변환이 가능한데, 큰 허용 범위 타입에서 작은 허용 범위 타입으로 변환하고싶을 때 사용하는 방법입니다.

작은 허용 범위 타입 = (작은 허용 범위 타입) 큰 허용 범위 타입

✅ exmaple

int intValue = 10;
byte byteValue = (byte) intValue;	// 강제 타입 변환

위와 같은 형식으로 사용합니다.

✅ 주의할 점

  • 데이터의 손실이 발생할 수 있습니다.
    실수에서 정수로 변환할 경우, 소수점이 잘려나가게 됩니다.

연산에서의 자동 타입 변환

  • 정수 연산
    byte 타입의 변수가 피연산자일 경우 int형으로 자동 변환됩니다.
byte x = 10;
byte y = 20;

byte result = x + y; // (x) -> 연산이 이루어지면서 변수 x, y는 int형으로 변환되기 때문에 byte형 변수에 담을 수가 없다.
int result = x + y; // (o)
  • 실수 연산
    float 타입의 변수가 피연산자일 경우 double형으로 자동 변환됩니다.

⭐️ 문자열

피연산자 중 하나가 문자열일 경우에는 나머지 피연산자도 문자열로 자동 변환됩니다.

String str1 = 10 + 2 + "8";
String str2 = "8" + 10 + 2;

System.out.println(str1);
System.out.println(str2);

/* 실행 결과:
128
8102

❗️❗️순서대로 연산하기 때문에, 숫자가 먼저일 경우 숫자에 대한 연산이 먼저 이루어진 다음 문자열로 변환됩니다.

문자열이 먼저 등장한다면, 그 뒤에 숫자들의 연산이 있어도 단일 숫자마다 문자열로 변환이 먼저 이루어지기 때문에 실행 결과가 다르게 됩니다.

(1) 문자열을 기본 타입으로 강제 타입 변환

✅ exmaple

// String -> int
int value = Integer.parseInt(str);

(2) 기본 타입을 문자열로 강제 타입 변환

✅ example

// 기본타입값 -> String
String str = String.valueOf(기본타입값);
profile
나만의 언어로 기록하며 성장하기 !

0개의 댓글