黑马程序员技术交流社区
标题:
关于这个toString哈~~
[打印本页]
作者:
赵海洋
时间:
2013-3-1 11:38
标题:
关于这个toString哈~~
本帖最后由 赵海洋 于 2013-3-1 14:56 编辑
首先是一段很简答的代码,在论坛里看到的:
public class TestString
{
private String name;
private int age;
public TestString(){}
public TestString(String name,int age)
{
this.name = name;
this.age = age;
}
public String toString()
{
return name+age;
}
public static void main(String[] args)
{
TestString test = new TestString("lisa",23);
System.out.println(test);
}
}
复制代码
然后呢,打印出来是lisa23,这端代码打印的是test,而这个lisa23其实应该是打印的test.toString(),于是我这么做了:
public class TestString
{
private String name;
private int age;
public TestString(){}
public TestString(String name,int age)
{
this.name = name;
this.age = age;
}
public static void main(String[] args)
{
TestString test = new TestString("lisa",23);
System.out.println(test);
}
}
复制代码
我把重写的toString语句删掉,再打印是TestString@145c859,也就是打印的哈希值,是不是可以理解为:如果我这里直接打印对象test,默认执行的其实是test.toString()。
求解释,求解释~~到底对不对????
作者:
谢波
时间:
2013-3-1 12:22
System.out.println(test);和System.out.println(test.toString());是一样的
toString方法是从Object继承而来的
在Object中的toString方法返回的是对象的引用,即类名+@+hashCode()
如果想要打印出自己想要的结果,可以重写toString方法
作者:
罗海云
时间:
2013-3-1 12:36
可以这么理解...默认的system.out.println(对象.toString()), 假如不需要按照系统默认的打的话. 可以自己复写..
作者:
赵海洋
时间:
2013-3-1 14:11
罗海云 发表于 2013-3-1 12:36
可以这么理解...默认的system.out.println(对象.toString()), 假如不需要按照系统默认的打的话. 可以自己复 ...
哦了,谢谢~~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2