11월 14, 2023

Java doubleValue(), byteValue() primitive type 변환 메소드, 유의점

 Java에서는 primitive type 간 변환을 도와주는 여러 메소드들이 있다.

doubleValue()byteValue()와 같은 메소드들을 소스 상에서 여러 번 보았을 텐데, 이들은 해당 primitive type을 다른 타입으로 변환해준다.

java
public class TypeConversionExample
public static void main(String[] args)
// doubleValue() 예제 
int intValue = 15
double doubleValue = (double) intValue; // int를 double로 변환 
 System.out.println("int를 double로 변환: " + doubleValue);  // int를 double로 변환:  15.0
// byteValue() 예제 
Double myDouble = 200.75;
// byteValue()를 이용해 byte로 변환 byte myByte = myDouble.byteValue();
  // 결과 출력
System.out.println("Double 값: " + myDouble); // Double 값: 200.75 System.out.println("Byte로 변환된 값: " + myByte); // Byte로 변환된 값: -56

즉, doubleValue() 는 값을 double로 변환할 때 사용, byte는 형태를 byte 형태로 변환할 때 사용한다.


여기서 doubleValue()는 일반적으로 int, float, long 등의 값을 double로 변환할 때 사용되기 때문에 데이터 유실에 크게 주의가 필요하지는 않다. (더 큰 형태로 변환하는 것이기 때문)

반면, byteValue()는 반대로 큰 데이터 타입인 double, int, float 등을 작은 byte 타입으로 변환할 때 쓰이기 때문에 주의가 필요하다. 변환 과정에서 데이터 손실이 발생할 수 있으므로 범위를 벗어나는 값은 의도하지 않은 결과를 초래할 수 있다. 예시에서 보듯이 double value 200.75는 byte로 변환되면서 -56이라는 의도하지 않은 값을 출력하게 된다.

이런 메소드들은 데이터 유실 없이 안전하게 변환이 필요한 경우에 사용해야 한다. 만약 데이터의 손실 없이 변환하고 싶을 때는 wrapper 클래스인 Integer, Double 등의 메소드를 사용하는 것이 좋다.