1. 자동 타입 변환 : 값의 범위가 작은 타입의 값을 값의 범위가 큰 타입의 변수에 대입하면 자동으로 형변환된다.
1) 정수 타입 값을 실수 타입 변수에 대입하는 경우
int value_i = 30
double value_d = value_i // int 타입의 값 30이 double 타입의 값 30.0으로 자동 형변환
2) long 타입과, 다른 정수 타입의 연산
정수 타입의 연산에서, 피연산자 중 하나 이상이 long 타입이면 나머지 피연산자들도 long 타입으로 자동 변환된다.
따라서, 연산 결과는 long 타입이 된다.
(연산 결과를 강제로 형변환하지 않는다면, 그것을 저장할 변수도 long 타입이어야 한다.)
byte value1 = 10;
int value2 = 100;
long value3 = 1000L;
long result = value1 + value2 + value3; # result == 1110
3) 실수 타입과 정수 타입의 연산
실수 타입과 정수 타입의 연산에서, 정수 타입 피연산자는 실수 타입으로 자동 변환된다.
따라서, 연산 결과도 실수 타입이 된다.
int intValue = 10;
double doubleValue = 5.5;
double result = intValue + doubleValue; // result == 10.0 + 5.5 == 15.5
이것은 연산식의 연산 결과를 실수 타입으로 얻기 위해 유용하다.
Java에서는 정수 타입끼리의 연산 결과는 정수가 되지만, 정수 타입과 실수 타입의 연산 결과는 실수가 되기 때문이다.
다음 코드를 보면, 정수 타입끼리의 나눗셈은 소숫점 아래를 절사한다. (다르게 말하면, 연산 결과는 나눗셈의 몫이다.)
그러나, 나눗셈의 피연산자 중 하나라도 실수 타입이면 정확한 나눗셈의 결과를 반환한다.
double result1 = 1 / 2 // result1 == (double) 0 == 0.0
double result2 = (double) 1 / 2 // result2 == 1.0 / 2 == 0.5
2. 강제 타입 변환 : 값의 범위가 큰 타입의 값을 값의 범위가 작은 타입의 변수에 대입하려면 강제로 형변환해야 한다.
값의 크기가 변수 타입의 허용 범위 안이면 값을 정확히 대입할 수 있다.
그러나, 값의 크기가 변수 타입의 허용 범위를 초과하면 값을 잘라내야 한다.
int intValue = 65;
char charValue = (char) intValue; // 값의 크기가 변수 타입의 허용 범위 안
// charValue == 65, System.out.println(charValue) == 'A'
double doubleValue = 3.14;
int intValue2 = (int) doubleValue; // 값의 크기가 변수 타입의 허용 범위 초과
// intValue2 == 3
3. + 연산에서의 문자열 자동 타입 변환 : + 연산에서 하나 이상의 피연산자가 문자열이면, 나머지 피연산자도 문지열로 자동 변환되며 문자열 결합 연산이 시작된다. (연산은 왼쪽부터 수행된다.)
String str1 = 10 + 2 + "8"; // "128"
String str2 = 10 + "2" + 8; // "1028"
String str3 = "10" + 2 + 8; // "1028"
String str4 = "10" + (2 + 8); // "1010"
4. 문자열과 기본 타입 사이의 강제 변환 : 문자열을 기본 타입으로, 또는 기본 타입을 문자열로 강제 변환할 수 있다.
1) 문자열을 기본 타입으로 변환하는 경우 : Integer.parseInt() 메소드, Double.parseDouble() 메소드 등을 사용한다.
(참조 : 혼자 공부하는 자바 p83)
int value1 = Integer.parseInt("10"); // value1 == 10
double value2 = Double.parseDouble("3.14"); // value2 == 3.14
boolean value3 = Boolean.parseBoolean("true"); // value3 == true
2) 기본 타입을 문자열로 변환하는 경우 : String.valueOf() 메소드를 사용한다.
String str1 = String.valueOf(10); // str1 == "10"
String str2 = String.valueOf(3.14); // str2 == "3.14"
String str3 = String.valueOf(true); // str3 == "true"
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 키보드로 입력한 내용을 변수에 저장하기 (0) | 2022.01.14 |
---|---|
[Java] print(), println(), printf()의 차이 (0) | 2022.01.13 |
[Java] 기본 타입, String 타입 (0) | 2022.01.10 |
[Java] 변수의 사용 범위 (0) | 2022.01.10 |
[Java] 이클립스 초기화 방법 (0) | 2022.01.10 |