double형 타입은 정수값이 잘 대입된다.
double형 타입에 정수를 넣을 경우 자동으로 형변환을 해준다.
이를 묵시적 타입 변환 (자동 타입 변환, implicit conversion)이라고 한다.
double d1 = 50;
double d2 = 500L;
d1에는 int형 리터럴 50이 저장되고
d2에는 long형 리터럴 500L이 저장된다.
int형 타입에 실수를 대입하면 오류가 발생한다.
실수는 정수를 포함하지만, 정수는 실수를 포함할 수 없기 때문에 아래의 코드는 컴파일 오류가 발생한다.
int i1 = 50.0;
int i2 = 25.4f;
실수 값을 정수에 저장하려면 형 변환을 해야한다.
실수 값을 정수타입의 변수에 저장하려면 정수타입으로 형변환 해야한다.
변환하고자 하는 값 앞에다 (변환하고자 하는 타입)을 붙인다.
주의해야할 점은 소수점 이하 부분은 잘린다.
이를 명시적 타입 변환 ( 강제 타입 변환 , explicit conversion )
int i1 = (int)50.0;
int i2 = (int)25.6f;
형변환시 주의할 점
크기가 큰 타입을 작은 타입에 저장할 때는 오버플로우를 신경써야 한다.
public class typeExam{
public static void main(String[] args){
long x2 = 50;
int i2 = (int)x2;
long x3 = Long.MAX_VALUE; // long타입의 최댓값
int i3 = (int)x3;
System.out.println(x3);
System.out.println(i3); // overflow
}
}
long타입의 모든 비트가 1인 MAX_VALUE에서 int타입으로 변환하면,
int타입의 부호비트가 1이되어 overflow되어 음수값이 나온다.
인프런의 '즐거운 자바' 강의 내용을 토대로 작성하였음.
'Java' 카테고리의 다른 글
[ Java ] 클래스 (0) | 2023.04.28 |
---|---|
[ Java ] 객체지향문법 (0) | 2023.04.28 |
[ Java ] StringTokenizer 클래스 (0) | 2023.04.15 |
[ Java ] charAt() (0) | 2023.04.10 |
[ Java ] 논리형타입과 논리연산자 (0) | 2023.04.10 |