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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 党巾水 中级黑马   /  2012-7-3 13:52  /  2129 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘馨琪 于 2012-7-4 10:11 编辑

记得论坛好像有规则是不让短时间大量发新帖提问题,但是我实在上网不方便,请版主谅解,谢谢。

请问,下面2句话有区别吗?谢谢。打印名称的话,不加toString()也能解决吧?
System.out.println(obj.getClass().toString() );


System.out.println( obj.getClass());

点评

楼主只要是真心提问的就行,当然不能发过多。 对于不是真心提问的,大量发新帖刷分的同学就要注意了。  发表于 2012-7-4 10:36

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
当然有区别了
 因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。

  它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法

  总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法

  回答补充:

  写这个方法的用途就是为了方便操作,所以在文件操作里面可用可不用

  例子1:

  public class A{

  public String toString(){return "this is A";}

  }

  如果某个方法里面有如下句子:

  A obj=new A();

  System.out.println(obj);

  会得到输出:this is A

  例子2:

  public class A{

  public String getString(){return "this is A";}//toString改个名字试试看

  }

  A obj=new A();

  System.out.println(obj);

  会得到输出:xxxx@xxxxxxx的类名加地址形式

  System.out.println(obj.getString());

  会得到输出:this is A

  看出区别了吗,toString的好处是在碰到“println”之类的输出方法时会自动调用,不用显式打出来。

点评

这位同学能不能把具体的区别写出来,大家学习学习。  发表于 2012-7-4 10:32
回复 使用道具 举报
本帖最后由 何旭栋 于 2012-7-3 15:24 编辑

没区别
System.out.println(obj)打印时自动调用obj的toString()方法
obj所属对象的类是Object的子类
子类并没有覆盖toString()时就调用Object类的toString(),也就是打印地址值
子类中有toString()时就调用子类的toString()

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
两段代码一样即使不加tostring也会自动调用。结果是一模一样的!
回复 使用道具 举报
java中默认的打印对象名字的时候就是 obj.toString();所以System.out.println(obj.toString())与System.out.println(obj);结果相同
回复 使用道具 举报
若A是一个类名
class A
{
}
变量 a是类A的一个实例
若类A没有重写父类(Object)的 toString()方法
当你执行 System.out.println(a);  时相当于  System.out.println(a.toString());  系统会默认调用 toString()方法 由于类A没有重写toString()此时调用的就是从父类继承的
System.out.println(a);  
System.out.println(a.toString());  这两句话其实没有本质区别,只不过前者是系统帮你默认为调用toString(),而后者是显示调用。
回复 使用道具 举报
谢谢大家!明白了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马