String a = new String("AA"); System.out.println(a);
출력: "AA"
왜 값이 출력이 되는 걸까?
println에 Ctrl+Click을 하면 PrintStream Class를 볼 수 있다 .
public void println(String x) { synchronized (this) { print(x); newLine(); } }
public void print(String s) { write(String.valueOf(s)); }
여기에서 String.valueOf(x);를 살펴보면
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
이 때, String.toString은
public String toString() {
return this;
}
이므로 변수의 값이 출력이 된다.
String이 아닌 다른 Class의 경우,
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
클래스 명@메모리 주소가 출력이 된다.