Study/java

[Java] Integer - value: 정수를 다른 숫자 타입으로 변환

 

Integer를 long이나 double과 같은 다른 숫자 타입으로 변환하고싶을 때 value() 메소드를 사용하면 됩니다.

 

intValue(), longValue(), shortValue(), floatValue(), doubleValue()

Integer int1 = 10;
System.out.println("intValue : " + int1.intValue());
System.out.println("longValue : " + int1.longValue());
System.out.println("shortValue : " + int1.shortValue());
System.out.println("floatValue : " + int1.floatValue());
System.out.println("doubleValue : " + int1.doubleValue());

각 타입에 맞게 변환해 주는 메서드입니다.

 

내부 로직은 5개 메서드 모두 해당 타입으로 명시적 형변환만 해서 반환하도록 구성되어 있습니다.

intValue면 (int)를, doubleValue면 (double)을 사용합니다.

 

예시 코드는 모두 그대로 변환되었지만, 데이터가 손실되는 경우가 있습니다.

예를 들면, short 타입은 int 타입보다 범위가 작습니다(-32768 ~ 32767).

그래서 short의 범위를 넘어가는 Integer 값에 shortValue()를 사용하면 short 범위에 맞게 변환되어 반환됩니다.

그 과정에서 데이터의 손실이 발생합니다.

Integer 뿐만 아니라 실수형(Float, Double)을 정수형(Integer, Long)으로 변환하는 경우, 용량이 더 적은 타입으로 변환하는 경우(Integer → Short, Long → Integer)에 데이터 손실이 발생합니다.

 

value 메서드는 static 메서드가 아니기 때문에 int 타입에서는 사용할 수 없고, Integer 인스턴스에서만 사용 가능합니다.