[Javaベース]システム.out.print()


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));
    }
ここでStringvalueOf(x);よく見ると.
public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }
この時StringtoStringは
public String toString() {
        return this;
    }
したがって変数の値は出力となる.
String以外のクラスでは、
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
クラス名@メモリアドレスが出力されます.