본문 바로가기

Back-end/Java

[Java] toString()과 String.valueOf()의 차이점과 형변환 방법

기본적으로 문자열(String) 형변환 3가지 방법

 

1. (String)

  • 대상 변수가 null 이면 NullPointerException.
  • Object 값이 String이 아니면 ClassCastException.

2. toString()

  • 대상 변수가 null 이면 NullPointerException.
  • Object 값이 String 변수가 아니더라도 출력.

3. String.value()

  • casting 변수가 null 이면 문자열 "null"을 만든다.
// 문자형 변수 선언
String strVal = "test";
System.out.println("String.valueOf : " + String.valueOf(strVal));
System.out.println("(String) : " + (String) strVal );
System.out.println(".toString() : " + strVal.toString());

System.out.println("===================================");

// 문자형 공백 변수 선언
Object objVal = "";
System.out.println("String.valueOf : " + String.valueOf(objVal));
System.out.println("(String) : " + (String) objVal );
System.out.println(".toString() : " + objVal.toString());

System.out.println("===================================");

// Object null 변수 선언
Object strVal3 = null;
System.out.println("String.valueOf : " + String.valueOf(strVal3));
System.out.println("(String) : " + (String) strVal3 );
System.out.println(".toString() : " + strVal3.toString());

>> String.valueOf : test
>> (String) : test
>> .toString() : test
>> ===================================
>> String.valueOf : 
>> (String) : 
>> .toString() : 
>> ===================================
>> String.valueOf : null
>> (String) : null
>> Exception in thread "main" java.lang.NullPointerException
	at simsim.JavaCastingString.main(JavaCastingString.java:26)

 

✏️ 대상 변수가 null 일때 NullPointerException은 toString() 방식일때 발생 확인.

 


 

// 문자형 상수 변수 선언
Object objIntVal = 1;
System.out.println("String.valueOf : " + String.valueOf(objIntVal));
System.out.println(".toString() : " + objIntVal.toString());
System.out.println("(String) : " + (String) objIntVal );

>> String.valueOf : 1
>> Exception in thread "main" .toString() : 1
>> java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
	at simsim.JavaCastingString.main(JavaCastingString.java:32)

✏️ 대상 변수가 String이 아닌 상수일때 ClassCastException 발생 확인.

 

 

🖥️ 정리

Null값을 형변환 하면 NPE가 발생하기 때문에, NPE를 방지할 수 있는 String.valueOf()를 사용하는 것이 좋다.