黑马程序员技术交流社区
标题:
关于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