본문 바로가기
Language/Java

[JAVA] 타입 변환

by 진아링 2023. 6. 5.
728x90
반응형

타입 변환

byte a = 10;
int b = a;

1. 자동 타입 변환

값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생한다.

byte < short < int < long < float < double

2. 강제 타입 변환

큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 나눠서 저장하는 것, casting이라고도 한다.

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

실수 타입은 정수 타입으로 강제 타입 변환을 할 경우, 소수점 이하 부분은 버려지고 정수 부분만 저장된다.

double doubleValue = 3.14;
int intValue = (int) doubleValue;

3. 정수 연산에서의 자동 타입 변환

정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int 타입보다 작은 byte, short 타입의 변수는 int 타입으로 자동 타입 변환된다.

byte x = 10;
byte y = 20;
byte result = x + y; // 컴파일 에러
int result = x + y;

// 그러나 미리 연산을 하고 대입을 하는 경우에는 타입 변환이 일어나지 않는다.
byte result = 10 + 20;

int 타입보다 허용 범위가 더 큰 long 타입이 피연산자로 사용되면 다른 피연산자는 무조건 long 타입으로 변환하고 연산을 수행한다.

4. 실수 연산에서의 자동 타입 변환

int intValue = 10;
double doubleValue = 5.5;
double result = intValue + doubleValue;

수학에서 1을 2로 나누면 결과값은 0.5가 된다.

int x = 1;
int y = 2;
double result = x / y;
System.out.println(result);

그러나 이렇게 쓰면 답은 0.0이다. x / y는 정수의 연산이 되기 때문이다. 따라서 둘 중 하나, 둘 모두를 실수 타입으로 변환해야 정확한 답을 얻을 수 있다.

5. + 연산에서의 문자열 자동 타입 변환

숫자 + 숫자 => 덧셈 연산 => 숫자

"문자열" + 숫자 => "문자열" + "숫자" => 결합 연산 => "문자열숫자"

숫자 + "문자열" => "숫자" + "문자열" => 결합 연산 => "숫자문자열"

int value = 1 + 2 + 3; // 6
String str = 1 + 2 + "3"; // 33
String str = 1 + "2" + 3; // 123
String str = "1" + 2 + 3; // 123

6. 문자열을 기본 타입으로 강제 타입 변환

자료형.parse자료형(변수)

String str = 100;
int value = Integer.parseInt(str);

문자열이 숫자가 아닌 알파벳이나 특수 문자, 한글 등을 포함하고 있을 경우에 숫자 타입으로 변환하면 숫자 형식 예외가 발생한다. => NumberFormatException

String.valueOf(기본타입값)

String str = String.valueOf(3.14);
728x90
반응형

'Language > Java' 카테고리의 다른 글

[JAVA] 연산자의 종류  (0) 2023.06.05
[JAVA] 연산자와 연산식  (0) 2023.06.05
[JAVA] 변수와 시스템 입출력  (0) 2023.06.05
[JAVA] 기본 타입  (0) 2023.06.05

댓글