黑马程序员技术交流社区
标题:
我地那个脑子啊就专牛角尖了,求解
[打印本页]
作者:
深井看海
时间:
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)
下载附件
2012-11-24 22:55 上传
作者:
齐银春
时间:
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