String s = "a";
System.out.println(s.toString());
String s,这句是建立了一个String类型的引用s,赋值号右边的“a”实际上就是new String("a"),此时在堆内存中创建了一个对象,引用s指向这个对象。s.toString()是调用Object类中的toString()方法将s所指向的对象中的内容转换成字符串的形式,最后再输出,所以,在这里,在输出语句中写s.toString()和s,效果是一样的。System.out.println();
打印引用类型,默认的就调用对象的toString()方法
Sysout.out是一个PrintStream对象,print方法中有一个重载是
public void print(Objcet o) {
write(String.valueOf(o));
}
而
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
这就是System.out.print的实现过程。
注意,在传的参数不是String的时候,会调用String.value的各种重载把Long、Double等类型的对象转成String。在参数是String的时候,就不会这么麻烦,而是直接write了。
|