A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵海洋 高级黑马   /  2013-3-1 11:38  /  1570 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵海洋 于 2013-3-1 14:56 编辑

首先是一段很简答的代码,在论坛里看到的:
  1. public class TestString
  2. {
  3.         private String name;
  4.         private int age;
  5.         public TestString(){}
  6.         public TestString(String name,int age)
  7.         {
  8.                 this.name = name;
  9.                 this.age = age;
  10.         }
  11.         public String toString()
  12.         {
  13.                 return name+age;
  14.         }
  15.         public static void main(String[] args)
  16.         {
  17.                 TestString test = new TestString("lisa",23);
  18.                 System.out.println(test);
  19.         }
  20. }
复制代码
然后呢,打印出来是lisa23,这端代码打印的是test,而这个lisa23其实应该是打印的test.toString(),于是我这么做了:
  1. public class TestString
  2. {
  3.         private String name;
  4.         private int age;
  5.         public TestString(){}
  6.         public TestString(String name,int age)
  7.         {
  8.                 this.name = name;
  9.                 this.age = age;
  10.         }
  11.         public static void main(String[] args)
  12.         {
  13.                 TestString test = new TestString("lisa",23);
  14.                 System.out.println(test);
  15.         }
  16. }
复制代码
我把重写的toString语句删掉,再打印是TestString@145c859,也就是打印的哈希值,是不是可以理解为:如果我这里直接打印对象test,默认执行的其实是test.toString()。
求解释,求解释~~到底对不对????

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

正序浏览
罗海云 发表于 2013-3-1 12:36
可以这么理解...默认的system.out.println(对象.toString()), 假如不需要按照系统默认的打的话. 可以自己复 ...

哦了,谢谢~~~
回复 使用道具 举报
可以这么理解...默认的system.out.println(对象.toString()), 假如不需要按照系统默认的打的话. 可以自己复写..
回复 使用道具 举报
System.out.println(test);和System.out.println(test.toString());是一样的
toString方法是从Object继承而来的
在Object中的toString方法返回的是对象的引用,即类名+@+hashCode()
如果想要打印出自己想要的结果,可以重写toString方法

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马