我们都知道在普通对象打印他的引用的时候,打印的是这个对象在堆内存中的地址,但是当我 String a = new String("aaaaa");
和 String c = "bbbbbbb"; 为什么他们打印的不是地址,而是aaaaa 和bbbbbb呢?现在有两种答案
1 在构造string对象的时候,需要在常量池中创建aaaaa对象,然后把aaaaa的值传递给a ,所以打印a的时候就直接打印aaaaa了,2 因为java.lang.String类继承了java.lang.Object,重写了java.lang.Object类中的toString()方法,所以打印的时候直接打印值,小弟是个小白,希望大牛可以给合理的解释,万分感谢,万分感谢,万分感谢!
和 String c = "bbbbbbb"; 为什么他们打印的不是地址,而是aaaaa 和bbbbbb呢?现在有两种答案
1 在构造string对象的时候,需要在常量池中创建aaaaa对象,然后把aaaaa的值传递给a ,所以打印a的时候就直接打印aaaaa了,2 因为java.lang.String类继承了java.lang.Object,重写了java.lang.Object类中的toString()方法,所以打印的时候直接打印值,小弟是个小白,希望大牛可以给合理的解释,万分感谢,万分感谢,万分感谢!
第二种答案是正确的,以为String重写了Object的toString方法,所以才会出现这种情况,你可以自己试一下,自己写一个类,直接打印,是地址,然后重写toString(),此时打印的值就是toString()决定的了。
不打印地址是因为你的对象重写了toSrting()
一般用来打印的输出流都会调用对象的toString()方法