자동타입변환
- 자동으로 타입변환이 일어나는 것을 말한다.
- 값의 허용 범위가 작은 타입이 큰 타입으로 변환하는 것을 말한다.
기본타입의 허용 범위는 크기별로 보면 아래와 같다.
byte < short, char < int < long < float < double
변환예시
int i_num = 20;
double d = i_num; //출력시 20.0
float f = i_num; //출력시 20.0
byte b_num = 10;
int i = b_num; //출력시 10
char ch = 'A';
int i = ch; //출력시 65
작은 타입에서 큰 타입으로의 변환이 안되는 경우도 존재한다.
변환할 수 없는 경우
byte b_num = 65;
char ch = b_num; //컴파일 에러 발생 - char에는 음수가 없음
byte 타입에는 음수가 있지만 char 타입에는 음수가 없기 때문에 변환할 수 없다.
자동타입변환 - 정수 연산
byte a = 10;
byte b = 20;
byte result1 = a + b; //컴파일 에러 - 연산시 정수는 int타입으로 변환되기 때문
int result2 = a + b;
연산을 하게 되면 int타입으로 변환되어서 연산하기 때문에 결과값도 int타입이 된다.
int a = 10;
long b = 20L;
int result1 = a + b; //컴파일 에러 - 두 수 중 큰 타입으로 수의 타입이 변환되어 연산되기 때문
long result2 = a + b;
두 수의 타입이 다를 경우 큰 타입으로 수의 타입이 바뀌기 때문에
연산결과는 long 타입이 된다.
자동타입변환 - 실수 연산
int a = 10;
double b = 10.5;
int result1 = a + b; //컴파일 에러 - 두 수 중 큰 타입으로 수의 타입이 변환되어 연산되기 때문
double result2 = a + b;
연산결과는 double 타입이 된다.
강제타입변환
- 값의 허용 범위가 큰 타입을 작은 타입으로 강제로 변환하는 것을 의미한다.
- 캐스팅 연산자로 ()를 사용한다.
- 강제로 타입변환을 하는 것은 값을 유지한 채 타입만 변경하는 것이기 때문에 작은 허용범위를 가진
타입에 들어갈 수 있는 범위내의 수를 타입변환해야 한다.
변환 예시
/*int -> byte*/
int i_num = 10;
byte b = (byte)i_num;
/*double -> int*/
double d_num = 10.0;
int i = (int)d_num; //출력시 10
/*int -> char*/
int i_num = 65;
char ch = (char)i_num; //출력시 A
문자열 기본타입변환
-문자열을 기본타입들로 변환하는 것을 의미한다.
변환예시
String str에 문자열인 숫자가 저장되어 있다고 가정한다. (ex) 3, 3.5, true 등
변환 | 예시 |
String -> byte | byte s = Byte.parseByte(str); |
String -> short | short s = Short.parseShort(str); |
String -> int | int s = Integer.parseInt(str); |
String -> long | long s = Long.parseLong(str); |
String -> float | float s = Float.parseFloat(str); |
String -> double | double s = Double.parseDouble(str); |
String -> boolean | boolean s = Boolean.parseBoolean(str); |
반대로 기본타입을 문자열로 변환하는 경우도 있다.
String str = String.valueOf(s)를 하면 된다. 여기서 s는 위에서 기본타입값이 저장되어진 s를 넣은 것이다.
'JAVA' 카테고리의 다른 글
[JAVA(자바)] 연산자란? (연산자 종류와 우선순위) (0) | 2022.12.24 |
---|---|
[JAVA(자바)] String.valueOf()와 toString() 차이 (0) | 2022.12.21 |
[JAVA(자바)] 리터럴이란? (0) | 2022.12.19 |
[JAVA(자바)] 변수와 자료형 (0) | 2022.12.19 |
[JAVA(자바)] 반올림해서 소수점 원하는 자리까지 출력하기 (0) | 2022.12.01 |
댓글