黑马程序员技术交流社区

标题: 我地那个脑子啊就专牛角尖了,求解 [打印本页]

作者: 深井看海    时间: 2012-11-24 22:49
标题: 我地那个脑子啊就专牛角尖了,求解
A a = new A();
System.out.println(a);  谁能给解释下为什么默认就写a就能打印了a.toString这个方法?我知道所有的类都继承了Object,有了里面的toStirng方法,我们一般调用方法都是写成对象.方法或类名.方法的,而我们打印的时候就默认写了后面的toString方法,直接写a就行?谁能解释下,难道说这就是语法吗?不用加toString就默认调用了Object的toString方法?
作者: 杜正冬    时间: 2012-11-24 22:54
本帖最后由 杜正冬 于 2012-11-24 22:55 编辑

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

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

未0命名.jpg

作者: 齐银春    时间: 2012-11-24 22:55
是从Object里面继承过来的
作者: 深井看海    时间: 2012-11-24 23:02
杜正冬 发表于 2012-11-24 22:54
java有 A这个数据类型 好像没见过

随便举个例子而已,你打印对象不都会打印那地址么~~,我是在想为什么不写成a.toString()来调用然后打印地址值,我知道是继承了object里的方法
作者: 森仔    时间: 2012-11-24 23:02
不可能吧,你的“a”是一个对象(我不明确你的A 是什么类型的),你直接输出的化,应该是把他堆内存地址给打印出来了吧。
作者: 深井看海    时间: 2012-11-24 23:03
我都明白,Object里面的toString方法里面是打印地址值,我想知道继承了他的这个方法,为什么其他的类的对象不需要去写对象.方法来调用这个功能?一般要调用一个类的功能都是对象.方法的啊,难道还能省略(.方法)直接输入对象名就行啊?
作者: 杜正冬    时间: 2012-11-24 23:13
{:soso__1002038146687898556_2:}高手来自民间 灌水 小手一抖 金币到手
作者: 徐军涛    时间: 2012-11-25 00:23
System.out.println();

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

        2,如果接收的是基本数据类型,调用 String.valueOf(x) 获取打印对象的字符串值
作者: 徐-星星    时间: 2012-11-25 03:05
杜正冬 发表于 2012-11-24 22:54
java有 A这个数据类型 好像没见过

当然是地址了,除非你重写了toString方法,否则你写上toString也是打印地址啊。。。。还有一点,同学你误会了。就是A这个类型可以自定义啊。。好比:Person 就是自定义的啊。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2