黑马程序员技术交流社区
标题:
关于String打印的问题
[打印本页]
作者:
李龙龙
时间:
2011-11-2 08:10
标题:
关于String打印的问题
class Demo
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
Student stu =new Student("lisi");
System.out.println(stu);
}
}
class Student
{
private String name;
Student(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public String toString()
{
return "name="+name;
}
}
上面小程序,打印的结果是 name=lisi ,
当注释了public String toString()
{
return "name="+name;
}
打印结果Student@1fb8ee3,问一下打印String时,是否自动调用toString()方法,能说一下原理吗?谢谢
作者:
庄承荣
时间:
2011-11-2 08:24
在Java中,打印一个对象会默认调用toString()方法,Object 类的 toString 方法返回一个字符串,如没有对toString()方法进行重写,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
作者:
沙铁健
时间:
2011-11-2 08:31
本帖最后由 沙铁健 于 2011-11-2 08:32 编辑
给你个直观点的吧
System.out.println(stu.toString());//先这么输出
------------------------------------------------
//然后你把这个在你的student类里加上
public String toString()
{
return "name="+name;
}
//在这么输出一遍
System.out.print(stu.toStrng());
//这样你就能直观的发现打印出来的东西了
复制代码
再结合一下 别人的解释 基本道理 楼上都说了很清楚...... 我认识可没这么清楚...就知道 打印对象默认调用对象.toString()方法 这个方法是object类的 所以是打印出来的是类名@哈希码.........
作者:
吉许
时间:
2011-11-2 08:54
toString
public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
上面是API中Object给出的说明.
由于Object是上帝,所有类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
自定义的类一定要覆盖该方法.
作者:
李龙龙
时间:
2011-11-2 10:59
谢谢,各位
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2