您的位置:首页 > 编程语言 > Java开发

java中对toString方法和对控制台输出以及重写toString问题的理解(笔记)

2018-01-12 16:18 369 查看
我们都知道,system.out用于控制台输出,便于我们初学者测试,调试程序。接下来有几种不同的情况。

1。输出字符串

(略),比如我们想输出“Hello world”,只需要写system.out.println(“Hello world”)就好了,“”里面的是String类型,这个很好理解。

2。输出“类名”



在控制台会输出一段“我们看不懂的内容”,其实我们知道"t"是什么就可以,第5行代码中,等号左边的t表示引用,右边是一个对象的实例化,也就是new出的一个对象,而等号就是将这个对象指向这个引用“t”,此处不赘述,因为在JAVA初学阶段中尽量避免指针引用内存回收等问题,因为java语言的产生的某部分作用就是为了避免这些底层编程模式,提高我们的效率。

这时候
[b]*第一个问题来了,为什么把引用放在system.out.println()里面,在控制台就能出现那个“我们看不懂的内容”呢?我们选中println点进去看看源码:[/b]


按住ctrl左键点击valueof


好了,这里出现了toString(),我们一下明白了,原来printfln()方法默认会调用toString()方法,所以当我们system.out.printfln(t),实际上它的真正语句是system.out.printfln(t.toString());
ps:print 和println唯一的区别就是后者输出换行
[b]
*第二个问题来了,我们现在知道默认输出toString(),但是为什么输出的是“ kaizi.Test@15db9742”,而不是“java夺去了我的天真”,“德玛西亚”,“JVM笑着看你装B”,接下来我们要了解toString()方法里面到底写了什么。
[/b]

快捷键ctrl+shift+t,输入object(为什么是object,别急后面会说),打开,ctrl+F查找toString()方法。如下图



至此,我们看图就可以看出他为什么会输出这个结果了吧。
[b]*第三个问题蹦蹦跳跳着来了,你会问:为什么有的时候要重写toString()方法呢?或者第三张图为什么是obj.toString()?跟我这个类有什么关系?第二个问题中为什么要找object类?[/b]

当然有关系,因为如果在创建类的时候没有声明要继承的类
那么java就默认继承Object类。这下懂了吧,虽然源码上是通过obj调用的toString(),可是我这个类是object类的子类,所以当然可以调用父类(object)的toString方法。所以有的时候我们用快捷方式(ctrl+shift+s再按s)创建toString方法的时候,会有一个@Override的注解,即为子类的重写。让我们测试下重写toString()方法后会输出什么结果。


最后一个问题我就不改板式了,你问我为什么会继承object类了呢,一句话,你为什么有两个眼睛呢?这是一个道理。规定好的。
初学JAVA,闲暇之余写写文章,当做笔记且供大家一起讨论学习,有错误的或者不懂的可以站内私信我。
原创帖,转载请署名出处。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐