黑马程序员技术交流社区

标题: 关于String的都弄得头痛了帮帮忙 [打印本页]

作者: 张天天    时间: 2012-6-29 17:29
标题: 关于String的都弄得头痛了帮帮忙
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";
        }
}

作者: 赵方明    时间: 2012-6-29 17:37
你的问题是什么啊,没问题怎么回答?
作者: 游洪波    时间: 2012-6-29 17:52
你的问题是什么啊?呵呵,你把问题弄上来大家帮你一起看看!
我现在可以先帮你分析下你程序的运行结果,以及原因
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";
        }
}
这是我能想到的一些地方,如果还有什么别的问题,我也会尽力帮你解答的





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