▶오늘의 주제 : 타입 변환
타입 변환이란 데이터 타입을 다른 데이터 타입으로 변환하는 것을 말합니다.예를 들어 byte 타입을 int 타입으로 변환하거나, 반대로 int 타입을 byte 타입으로 변환하는 행위를 말합니다.
▶자동 타입 변환
: 타입 변환이 일어나는 것을 의미합니다. 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생합니다.
<허용 범위 크기순>
byte < short <char< int < long < float < double
byte bytevalue = 10;
int intValue = btteValue; //자동 타입 변환됨
이 코드는 int 타입이 byte 타입보다 허용 범위가 더 크기 때문에 자동 타입 변환이 일어납니다.
public class Hello {
public static void main(String[] args) {
byte byteValue= 10;
int intValue = byteValue;
System.out.println("intValue " + intValue);
char charValue = '가';
intValue = charValue;
System.out.println("가의 유니코드: " + intValue);
intValue = 50;
long longValue = intValue;
System.out.println("longValue: " + longValue);
}
}
intValue 10
가의 유니코드: 44032
longValue: 50
▶강제 타입 변환
: 큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 나눠서 저장하는 것을 강제 타입 변환(캐스팅)이라고 합니다. 강제 타입 변환은 연산자 괄호 () 를 사용하는데, 괄호 안에 들어가는 타입은 나누는 단위입니다.
int intValue = 10;
byte bytevValue = (byte) intValue; //강제 타입 변환
int 타입은 byte 타입보다 더 큰 허용 범위를 가집니다. 따라서 int 타입은 byte 타입으로 자동 변환 되지 않습니다. 하지만 (byte) 캐스팅 연산자를 사용해서 byte 타입으로 강제 변환 할 수 있습니다.
<허용 범위 크기순>
byte < short <char< int < long < float < double
public class Hello {
public static void main(String[] args) {
int intValue = 44032;
char charValue = (char) intValue;
System.out.println(charValue);
long longValue = 500;
intValue = (int) longValue;
System.out.println(intValue);
double doubleValue = 3.14;
intValue = (int) doubleValue;
System.out.println(intValue);
}
}
가
500
3
▶ 연산에서의 문자열 자동 타입 변환
: 자바에서 + 연산자는 두 가지 기능을 가지고 있습니다. 피연산자가 모두 숫자일 경우에는 덧셈 연산을 수행하지만, 피연산자 중 하나가 문자열일 경우에는 나머지 피연산자도 문자열로 자동 변환되어 문자열 결합 연산을 수행합니다.
숫자 + 숫자 -> 덧셈 연산 -> 숫자
"문자열" + 숫자 -> "문자열" + "숫자" -> 결합 연산 -> "문자열숫자"
숫자 + "문자열" -> "숫자" + "문자열" -> 결합 연산 -> "숫자문자열"
public class Hello {
public static void main(String[] args) {
int value = 10 + 2 + 8;
System.out.println("value: " + value);
//숫자 연산
String str1 = 10 + 2 + "8";
System.out.println("str1: " + str1);
String str2 = 10 + "2" + 8;
System.out.println("str2: " + str2);
String str3 = "10" + 2 + 8;
System.out.println("str3: " + str3);
String str4 = "10" + (2+8);
System.out.println("str4 : " + str4);
//문자열 결합 연산
}
}
value: 20
str1: 128
str2: 1028
str3: 1028
str4 : 1010
▶마무리
자동 타입 변환 : 자동으로 타입이 변환되는 것을 말합니다. 값의 허용 범위가 작은 타입이 허용범위가 큰 타입으로 저장될 때 발생합니다.
강제 타입 변환: 강제로 타입을 변환하는 것을 말합니다. 값의 허용 범위가 큰 타입을 허용 범위가 작은 타입으로 쪼개어서 저장하는 것을 말합니다.
문자열 결합 연산 : 문자열과 + 연산을 하면 다른 피연산자도 문자열로 변환되어 문자열 결합이 일어납니다.
'Java' 카테고리의 다른 글
Java - 연산자의 종류 (0) | 2022.11.08 |
---|---|
Java - 연산자와 연산식 (0) | 2022.11.08 |
Java - 변수 기본 타입 (0) | 2022.11.08 |
Java - 변수 (0) | 2022.11.08 |
Java - 객체지향언어 퀴즈 (0) | 2022.10.25 |