형 변환
형변환에는 자동 형 변환과 명시적 형 변환이 있다.
자동 형 변환
자동 형변환은 담을 수 있는 데이터형이 담을 데이터형보다 큰 경우 Java에서 자동적으로 데이터형을 변경해주는 것을 말한다. 즉, Java에서는 표현범위가 좁은 데이터 타입에서 표현범위가 넓은 데이터 타입으로의 변환은 자동적으로 변환된다.
예를 들어, 다음 코드를 보면
double b = 1; //실행결과 : 1.0
여기서 'double'는 실수를 담고 있는 데이터형이다. 1은 정수(integer)이다. 여기서 실수는 정수보다 큰 데이터형이므로 Java에서 자동적으로 실수형으로 데이터를 변환시켜준 것이다. 따라서 실행결과는 데이터형이 바뀐 1.0이 된다.
반면에,
int b = 1.0; //실행결과 : error
정수는 실수보다 작은 데이터형이므로 Java에서는 자동적으로 형변환을 시켜주지 않고, 에러를 발생시킨다.
이것을 정리하면 다음과 같다.
- 표현 범위가 넓은 데이터 타입을 사용하면 데이터의 손실이 일어나지 않으므로 자동적으로 형변환을 해준다.
- 표현 범위가 좁은 데이터 타입을 사용하면 데이터의 손실이 일어날 수 있으므로 자동적으로 형변환을 해주지 않고 에러가 일어난다.
자동적으로 데이터의 형을 변환 시켜주는 규칙은 다음과 같다.
명시적 형 변환
위의 에러가 나는 경우에는 명시적으로 형변환을 해야한다. 가장 기본적인 방법은 아래 두 가지이다.
double b = 1.0;
int b = (int) 1.0; //실행결과 : 1
첫째는 변수가 담고 있는 데이터형을 담고자하는 데이터의 타입과 일치시키게 바꾸는 것이다.
둘째는 담고자하는 데이터 앞에 ()안에 변수의 데이터 형을 적는 것이다.
참고로, 실수에서 정수로 데이터를 변환하면 소수점이 전부 다 날라간다.
타입 간의 변환방법 (명시적 형 변환)
타입 간의 변환은 프로그램에서 자주 사용되므로 반드시 기억해둘 필요가 있다.
1) 숫자를 문자로 변환 ▷ 숫자에 '0'을 더한다.
System.out.println((char)(3+'0')) // 3(문자)
2) 문자를 숫자로 변환 ▷ 문자에서 '0'을 뺀다.
System.out.println('3'-'0') // 3(숫자)
3) 숫자를 문자열로 변환 ▷ 숫자에 빈 문자열("")을 더한다.
System.out.println(3 + "") // 3(문자열)
4) 문자열을 숫자로 변환 ▷ Integer.parseInt() , Double.parseDouble()을 사용한다.
Integer.parseInt("3") // 3(integer)
Double.parseDouble("3.14") // 3.14(real number)
5) 문자열을 문자로 변환 ▷ charAt(0)을 사용한다.
"3".charAt(0) // '3'
6) 문자를 문자열로 변환 ▷ 빈 문자열("")을 더한다.
'3' + "" // "3"
참고
https://opentutorials.org/module/516/5330
Java의 정석 - 기초편
'Java > Java 정리' 카테고리의 다른 글
[Java] 조건문 - switch 문 (0) | 2023.05.04 |
---|---|
[Java] 조건문 - if 문 (0) | 2023.05.03 |
[Java] 패키지(package) (0) | 2023.04.26 |
[Java] 연산자 (0) | 2023.04.13 |
[Java] 변수, 기본형과 참조형 (0) | 2023.04.12 |