黑马程序员技术交流社区
标题:
求大神讲解
[打印本页]
作者:
lang
时间:
2015-3-3 20:26
标题:
求大神讲解
本帖最后由 lang 于 2015-3-4 14:45 编辑
public class AD {
public static void main(String[] args){
Demo d=new Demo();
String s="abc";
System.out.println(d);//打印的是地址值
System.out.println(s);//打印的是abc
}
}
class Demo
{
String ds="demo";
}
问题:d和s同为指向型变量,存储的都是地址值,但打印出来,一个为地址值,一个为内容,为什么结果不一样呢?
作者:
菠菜树
时间:
2015-3-4 10:39
我也不知道,但是我自己胡乱猜测认为,首先println()是调用了toString,
s是String类,println(s)输出abc是没有疑问的
但是d是demo类的一个实例,d应该是一个空间的指针值,直接输出println(d)就是输出d的地址值
d的一个属性是ds,d.ds是String类,println(d.ds)应该输出abc,
作者:
shaoshuai
时间:
2015-3-4 11:29
打印出来的d确实是调用了toString()方法,而Object中toString()的实现就是输出对象的hashcode
作者:
lang
时间:
2015-3-4 14:44
菠菜树 发表于 2015-3-4 10:39
我也不知道,但是我自己胡乱猜测认为,首先println()是调用了toString,
s是String类,println(s)输出abc是 ...
哦,明白了,多谢多谢!!
作者:
小十
时间:
2015-3-8 12:44
自己定义的对象没有toString方法,String ss = d.ds; 把调用的结果在返给String。调用String类型里面的toString方法就行了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2