String s = new String("abc");
System.out.println(s);
这输出是s的内容,这明明是对象的引用啊,是地址啊
如果这样
Student student =new Student();
System.out.println(student);却打印地址
因为所有的类继承Object类,所以单独输出一个对象的时候,它会调用Object.toString(当然 你没有重写同String的话),打印出来的就是一串表达地址的字符串。
就是这样,也就是最后调用了toString().
然而我们的String类里重写了toString(),它返回的是String自己,String是什么呢,String其实就是字符数组(它内部封装 了一个字符数组),所以打印字符串,其实就是打印字符数组,而不是地址。
可以看下源码更好理解
String s = new String("abc");定义String不要这定义,这样 每次都会产生新的垃圾,即每次都会创建两个对象应使用String s="abc";
https://zhidao.baidu.com/question/549320954.html
println做了特殊处理,对于String对象直接打印内容
你在student类里重载Tostring方法 也可以输出属性字符串。String内部进行了处理吧,
你试试对象.toString()
System.out.print(s.toString());
println输出的是对象的toString()方法
你写一个String 按住ctrl 鼠标点左键 怎么进么看 String类重写了 toString()方法这就是原因所在