Programming Language/JAVA
[JAVA] String 메소드 3 - valueOf() vs toString() 차이점
Untitled_Blue
2023. 5. 6. 18:01
반응형
안녕하세요. 이번 글은 valueOf()와 toString()의 차이점에 대한 설명입니다.
- valueOf()
package classes;
public class Example {
public static void main(String[] args) {
char value_char[] = {'a', 'p', 'p', 'l', 'e'};
int a = 10;
double b = 50.6;
char c = 'A';
boolean d = true;
System.out.println(String.valueOf(value_char)); // apple
System.out.println(String.valueOf(a)); // 10
System.out.println(String.valueOf(b)); // 50.6
System.out.println(String.valueOf(c)); // A
System.out.println(String.valueOf(d)); // true
}
}
- String.valueOf(Object o) : 매개변수 내의 값을 String 자료형으로 변환해주는 메소드
이때, 매개변수 Object o는 int형 뿐만 아니라 byte, short, long, double, float, char, boolean 형 등등 거의 모든 자료형이 포함되어 있으며 모두 문자열로 변환 가능하다.
- toString()
package classes;
public class Example {
public static void main(String[] args) {
int a = 10;
double b = 50.6;
char c = 'A';
boolean d = true;
System.out.println(Integer.toString(a));
System.out.println(Double.toString(b));
System.out.println(Character.toString(c));
System.out.println(Boolean.toString(d));
}
}
- Object.toString(Object o) : 매개변수의 자료형을 문자열로 변환해주는 메소드
이때, 앞뒤에 있는 Object 부분에는 valueOf()처럼 거의 모든 자료형을 사용할 수 있다.
- 두 메소드의 차이점
package classes;
public class Example {
public static void main(String[] args) {
int a = 10;
double b = 50.6;
System.out.println(String.valueOf(a)); // 10
System.out.println(String.valueOf(b)); // 50.6
System.out.println(Integer.toString(a)); // 10
System.out.println(Double.toString(b)); // 50.6
}
}
다음과 같이 보면 모두 같은 출력 결과를 보여주고 있기 때문에 차이점을 알기 쉽지 않다.
package classes;
public class Example {
public static void main(String[] args) {
Object obj = null;
System.out.println(String.valueOf(obj));
System.out.println(obj.toString());
}
}
하지만, JAVA의 최상위 클래스인 Object를 사용해서 비교하면 확실히 차이점을 알 수 있다. 해당 클래스는 모든 자료형을 표현할 수 있기 때문에 내부에 null을 넣을 수도 있기 때문이다.
먼저 toString()은 null값을 넣으면 내부에 null값으로 인해 예외로 인한 오류가 발생했다는 뜻으로 NullPointerException 이라는 예외가 발생하고, valueOf()은 빈 값이면 있는 그대로 null이라고 출력한다.
요약하자면, valueOf()와 toString()의 차이점은 null값을 기준으로 예외에 대한 오류 출력 유무의 차이이다.
null값 감지 여부를 체크해야 되거나 이와 관련된 기능을 구현하고자 한다면 valueOf()의 사용을 추천한다.
다음 글은 ==와 equals()의 차이점에 대한 글입니다.
반응형