본문 바로가기

Java

[ Java ] 타입변환

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