본문 바로가기
JAVA

[JAVA(자바)] 자동타입변환, 강제타입변환, 문자열타입변환

by 초이사 2022. 12. 21.

자동타입변환

- 자동으로 타입변환이 일어나는 것을 말한다. 

- 값의 허용 범위가 작은 타입이 큰 타입으로 변환하는 것을 말한다.

 

기본타입의 허용 범위는 크기별로 보면 아래와 같다.

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를 넣은 것이다.

댓글