본문으로 바로가기

valueOf() 

여러 기본 타입을 String 클래스로 변경할 수 있도록 정적 메소드를 메소드 오버로딩 형태로 제공합니다.

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    
    public static String valueOf(Object obj) { ... }
    public static String valueOf(char data[]) { ... }
    public static String valueOf(boolean b) { ... }
    public static String valueOf(char c) { ... }
    public static String valueOf(int i) { ... }
    public static String valueOf(long l) { ... }
    public static String valueOf(float f) { ... }
    public static String valueOf(double d) { ... }
    
    // ...
}

 

조금 더 디테일하게 살펴보면,

각 타입에 해당하는 Wrapper 클래스를 활용하여 toString() 메소드를 활용하는 것을 볼 수 있습니다.

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

public static String valueOf(int i) {
    return Integer.toString(i);
}

 

예시

기본 타입 → String 클래스

// 기본타입
char c = 'A';
char data[] = {'H','E','L','L','O'};
boolean b = true;
int i = 10;
long l = 100;
float f = 1.0f;
double d = 2.0;

String charToStr = String.valueOf(c);
String charArrToStr = String.valueOf(data);
String booleanToStr = String.valueOf(b);
String intToStr = String.valueOf(i);
String longToStr = String.valueOf(l);
String floatToStr = String.valueOf(f);
String doubleToStr = String.valueOf(d);

System.out.println(charToStr);
System.out.println(charArrToStr);
System.out.println(booleanToStr);
System.out.println(intToStr);
System.out.println(longToStr);
System.out.println(floatToStr);
System.out.println(doubleToStr);

 

Object → String 클래스

// Object
List<String> arrayList = new ArrayList<>();
arrayList.add("A");
arrayList.add("B");
arrayList.add("C");

Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("kim", 13);
hashMap.put("lee", 18);
hashMap.put("kang", 11);

String listToStr = String.valueOf(arrayList);
String mapToStr = String.valueOf(hashMap);

System.out.println(listToStr); // [A, B, C]
System.out.println(mapToStr); // {lee=18, kang=11, kim=13}

 

 

사용자 정의 객체 → String 클래스

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Person {
    private String name;
    private Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }

    @Override
    public String toString() {
        // Jackson 라이브러리 활용하여 Json String으로 반환
        ObjectMapper mapper = new ObjectMapper();
        try {
            return mapper.writeValueAsString(this);
        } catch (JsonProcessingException e) {
            return "null";
        }
    }
}
Person person = new Person("veneas", 25);
String objToStr = String.valueOf(person);
System.out.println(objToStr); // {"name":"veneas","age":25}