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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 深井看海 中级黑马   /  2012-11-24 22:49  /  2114 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

A a = new A();
System.out.println(a);  谁能给解释下为什么默认就写a就能打印了a.toString这个方法?我知道所有的类都继承了Object,有了里面的toStirng方法,我们一般调用方法都是写成对象.方法或类名.方法的,而我们打印的时候就默认写了后面的toString方法,直接写a就行?谁能解释下,难道说这就是语法吗?不用加toString就默认调用了Object的toString方法?

点评

直接打印对象就是调用的是Object的toString方法  发表于 2012-11-24 22:54

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
本帖最后由 杜正冬 于 2012-11-24 22:55 编辑

java有 A这个数据类型 好像没见过{:soso__207873662566471072_2:}

未0命名.jpg (10.34 KB, 下载次数: 72)

未0命名.jpg
回复 使用道具 举报
是从Object里面继承过来的
回复 使用道具 举报
杜正冬 发表于 2012-11-24 22:54
java有 A这个数据类型 好像没见过

随便举个例子而已,你打印对象不都会打印那地址么~~,我是在想为什么不写成a.toString()来调用然后打印地址值,我知道是继承了object里的方法
回复 使用道具 举报
不可能吧,你的“a”是一个对象(我不明确你的A 是什么类型的),你直接输出的化,应该是把他堆内存地址给打印出来了吧。
回复 使用道具 举报
我都明白,Object里面的toString方法里面是打印地址值,我想知道继承了他的这个方法,为什么其他的类的对象不需要去写对象.方法来调用这个功能?一般要调用一个类的功能都是对象.方法的啊,难道还能省略(.方法)直接输入对象名就行啊?
回复 使用道具 举报
{:soso__1002038146687898556_2:}高手来自民间 灌水 小手一抖 金币到手
回复 使用道具 举报
System.out.println();

用到的是System类中的out标准输出流即PrintStream流中的println(Object x)
方法,参数是Object
        1,如果接收的是对象的引用时,默认调用了Object对象的toString方法,返回一个这样的字符串:
        “getClass().getName() + '@' + Integer.toHexString(hashCode())”
       

        2,如果接收的是基本数据类型,调用 String.valueOf(x) 获取打印对象的字符串值
回复 使用道具 举报
杜正冬 发表于 2012-11-24 22:54
java有 A这个数据类型 好像没见过

当然是地址了,除非你重写了toString方法,否则你写上toString也是打印地址啊。。。。还有一点,同学你误会了。就是A这个类型可以自定义啊。。好比:Person 就是自定义的啊。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马