Groo

문자열 형 변환의 종류 및 차이점 본문

프로그래밍 언어/Java

문자열 형 변환의 종류 및 차이점

김주엽 2020. 6. 18. 18:04

안녕하세요, 오늘은 조금 가벼운 마음으로 Java 자바에서의 문자열 형 변환에 대해 알아보려 합니다.
다양한 종류의 문자열 형 변환에 대해서 살펴보고 각각의 특징에 대해 한 번 구별해보도록 하겠습니다.

🎭 형 변환이란 무엇인가?

형 변환에 대해서 간단히 설명하면 특정 변수 또는 상수의 타입을 다른 타입으로 변형시키는 것이라고 말할 수 있습니다. 이렇게 형 변환을 진행하는 이유는 프로그램 내에서 연산 및 비교 작업을 하기 위해서는 각 대상의 타입을 서로 동등하게 맞춰야 하기 때문입니다. 또한 형 변환의 종류는 아주 다양하며 그중에서 오늘 저희는 문자열 형 변환의 방법에 대해서 알아보는 시간을 가지도록 하겠습니다.

 

📧 문자열 형 변환의 종류

문자열 형 변환의 종류로는 대표적으로 String.valueOf() 속성과 Object.toString() 두가지 속성이 존재합니다. 각각의 속성 모두 String 문자열 참조 자료형으로 형 변환하는 목적을 가지고 있습니다. 하지만 몇 개의 차이점이 존재하니 자세히 한 번 알아보시죠!

String.valueOf()

String.valueOf() 속성은 아래의 사진과 같이 int, char, float, Object 등 다양한 종류의 자료형을 파라미터로 전달 받을 수 있습니다. 즉 기본형, 참조형 자료형에 직접적으로 구애받지 않고 무엇이든 자유롭게 String 자료형으로 형 변환이 가능하다는 것입니다.

public class Test {
    public static void main(String[] args) {
        int number = 5;
        String test = String.valueOf(number);
    }
}

Object.toString()

Object.toString() 속성은 앞에서 배운 String.valueOf() 속성보다 기능적 제한이 존재합니다. 일반적인 자료형을 가진 변수 또는 값들에서는 이 속성을 사용하지 못하지만 Object 즉 객체의 성질을 가진 인스턴스에서는 이를 자유롭게 사용이 가능하다는 것이죠!

public class Test {
    public static void main(String[] args) {
        Integer number = new Integer(5);
        String str = number.toString();
    }
}

🖥 String.valueOf()와 Object.toString()의 차이

그럼 이제 여러분들은 이 두가지의 속성들 중 어떤 것을 사용해야하는지 어떤 것이 더 좋은지 궁금하실 것입니다. 두 속성의 차이는 크게 두 가지가 존재합니다. 첫 번째는 위에서 말했던 변환 가능 자료형의 종류 및 갯수입니다. 두 번째는 바로 NULL 값의 처리 여부에 따른 차이입니다. 두 개의 속성은 동일한 NULL 값임에도 불구하고 다른 결과를 표현하고 있습니다. 이 차이에 대해서 알아보시죠!

public class Test {
    public static void main(String[] args) {
        Integer number = null;
        
        String str = String.valueOf(number); // 문자열 null 저장
        String str2 = number.toString(); // NullPointerException 발생
    }
}

위의 코드를 예시로 들겠습니다. Integer 자료형의 number라는 변수를 null로 초기화하고 있습니다. number 변수는 현재 일반 변수가 아닌 인스턴스 변수이기 때문에 String.valueOf()와 Object.toString() 두 속성 모두에서 자유롭게 사용할 수 있습니다.

 

그 후 str 변수에는 String.valueOf() 속성을 사용하여 number 변수를 String 자료형으로 변환하고 반면에 str2 변수에는 Object.toString() 속성을 사용하여 값을 변환하고 있습니다. 최종적으로 str 변수와 str2 변수의 값을 비교해본다면 str 변수에는 문자열 null 값이 저장되는 반면에 str2 변수에는 Object.toString() 속성을 사용할 때 이미 NPE가 발생한 것을 볼 수 있습니다.

Exception in thread "main" java.lang.NullPointerException
	at Test.main(Test.java:6)

결과적으로 String.valueOf() 속성을 사용한다면 만약 변환값이 NULL이라도 그 값을 문자열로 포맷하는 반면에 toString() 속성은 변환하는 값이 NULL이라면 NullPointerException 오류를 포맷 과정에서 바로 발생시키는 것을 확인할 수 있습니다.

👍 글을 마치며

오늘은 String 문자열 참조 자료형으로 형 변환을 할 수 있도록 도와주는 두 가지의 속성에 대해 알아보았습니다. 제가 이 글을 작성하게 된 이유는 평소에는 아무렇지 않게 이와 같은 속성들을 잘 사용하다가 두 개의 속성은 모두 같은 목적을 가진 속성이지만 왜 두 개로 나뉘어져있을까? 라는 생각을 하였습니다. 저는 그 이유가 궁금해 이에 대해서 찾아보고 공부한 결과 몇 개의 차이점이 존재한다는 것을 알게되었습니다. 이처럼 평소에는 아무렇지 않게 사용한 기능이지만 그 기능에 대한 세부적인 이유와 내용들을 찾아보는 것도 좋은 경험이고 공부가 된다는 것을 알게되었습니다. 이와 관련된 다양한 내용들 또한 많이 존재하니 앞으로 꾸준히 올리겠습니다.

'프로그래밍 언어 > Java' 카테고리의 다른 글

Observable 클래스의 팩토리 함수 (1)  (0) 2020.12.06
Observable 클래스의 기본  (0) 2020.10.24
열거형 Enum 클래스  (1) 2020.09.26
RXJava 소개  (0) 2020.08.25
Comments