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 |
댓글