특별한 일상

[java] 문자열 형변환(String Casting)[(String)/String.valueOf()/.toString()] 본문

IT•개발 끄적/Java

[java] 문자열 형변환(String Casting)[(String)/String.valueOf()/.toString()]

소다맛사탕 2021. 4. 19. 22:44
반응형

안녕하세요. 소다맛사탕 입니다.

오늘은 문자열로 형변환 종류와 사용법에 대해 알아 보겠습니다.

 

기본적으로 문자열(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 발생 확인.

 

 

이로써 결론은,

Casting 방식에 따라 화면에 데이터를 뿌리거나 비교할때,

Null 존재 여부에 따른 exception이 왜 발생하고, 어떤 방식으로 형변환을 해야 하는지 다시 한번 정리되었다.

 

Comments