자바(java) 타입 간 변환

김설영·2022년 3월 24일
0

문자와 숫자 간 변환

숫자 -> 문자

(char) (3 + '0') = '3'

문자 -> 숫자

'3' - '0' = 3
유니코드값 51 - 유니코드값 48 = 3
유니코드 값으로 계산 시, '어떤 숫자 문자'에서 '0'을 빼면 그 값이 나오게 되어있음.


문자열로의 변환

숫자 -> 문자열

3 + "" = "3"

문자 -> 문자열

'3' + "" = "3"


문자열을 다른 타입으로 변환

문자열 -> 숫자

Integer.parseInt("3") = 3
Double.parseDouble("3.4") = 3.4

문자열 -> 문자

"3".charAt(0) = '3'


형변환 연산자

1. int <-> char

int -> char : (char) 65 > 'A'
char -> int : (int) 'A' > 65

Notice
char는 유니코드 문자표를 따르는데,
'A'는 유니코드 값이 65이다.
char ch = 'A'; 의 경우, 메모리에 'A'가 저장되는 것이 아니고, 유니코드값 65가 이진수로 저장된다.

2. float <-> int

float -> int : (int)1.6f > 1 // 반올림 되지 않고 버림
int -> float : (float)10 > 10.0f

자동 형변환

작은 타입의 값을 큰 타입에 넣을 때는, 형변환 연산자를 사용해주지 않아도 된다. 컴파일러에 의해, 자동으로 형변환이 이뤄지기 때문이다. (생략 가능)

하지만, 큰 타입의 값을 작은 타입의 값에 넣을 때는 "값 손실"이 발생할 수 있기 때문에, 반드시 형변환 연산자를 사용해주어야 에러가 나지 않는다. (생략 불가)

ex1) float f = 1234; (o)

ex2) int i = 3.14f; (x / error)
-> 값 손실이 발생하기 때문에, 컴파일러가 자동으로 해결해줄 수 없다. 무조건 형변환 연산자를 사용해주어야 한다.
-> int i = (float) 3.14f; 로 변경

byte -> short, char -> int -> long -> float -> double

profile
블로그 이동하였습니당! -> https://kimsy8979.tistory.com/

0개의 댓글