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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张天天 中级黑马   /  2012-6-29 17:29  /  1447 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class ObjectTest
{
        public static void main(String[] args)
        {
                Object object = new Object();

                System.out.println(object);
                System.out.println(object.toString());

                String str = "aaa";

                System.out.println(str);
                System.out.println(str.toString());

                Student student = new Student();

                System.out.println(student);
                System.out.println(student.toString());

        }
}

class Student extends Object
{
        public String toString()
        {
                return "Hello World";
        }
}

2 个回复

倒序浏览
你的问题是什么啊,没问题怎么回答?
回复 使用道具 举报
你的问题是什么啊?呵呵,你把问题弄上来大家帮你一起看看!
我现在可以先帮你分析下你程序的运行结果,以及原因
public class ObjectTest
{
        public static void main(String[] args)
        {
                Object object = new Object();
                System.out.println(object);//这个地方输出的是一个内存的地址对吧,因为prntln()方法默认的调用的是对象的toString()方法,而object类的tostring方法输出的是对象的内存地址
                System.out.println(object.toString());//这个地方加上tostring()和不加时一样的,也是输出对象的内存地址

                String str = "aaa";

                System.out.println(str);//这个地方输出的是aaa我想你该问了String也是object的子类为什么输出的不是内存地址而是aaa呢?原因是这样的String继承了object类也就继承了object类的toString方法,在object类中tostring()方法是输出内存地址的,而在String中他复写了object的toString()方法,改成了输出本身的值,所以你看到输出的是aaa
                System.out.println(str.toString());//这个tostring和上边的结果是一样的因为println()默认的就是输出对象的tostring方法,所以加不加都一样

                Student student = new Student();

                System.out.println(student);//这个地方输出的是return "Hello World";因为你继承了Objcet类的同时复写了tostring方法,j将tostring方法改成了输出return "Hello World"   所以这里输出了  return "Hello World"。如果你不复写toString的话输出的就是内存地址了
                System.out.println(student.toString());//结果同上

        }
}

class Student extends Object//这个地方extends Object 写不写都一样,因为java定义的所以类都默认继承了Object类,也就是java中定义的所有类都是Object类的子类
{
        public String toString()
        {
                return "Hello World";
        }
}
这是我能想到的一些地方,如果还有什么别的问题,我也会尽力帮你解答的

评分

参与人数 1技术分 +2 收起 理由
刘蕴学 + 2 这也行。。。

查看全部评分

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