JAVA 无用知识小科普1_打印结果 -> 预期内容 || xxx@xxx

疑问:为什么我打印对象时  结果是一串字符?

原因: 对应类没有重写 toString() 方法。

额......

这会儿又有疑问了,我的类都没有继承(extends)其他类,何来重写一说 ?

答:因为每一个java类创建之后都会默认隐式继承 Object 类,换句话说:Object 类是所有java类的祖宗类,不管你创建的类  名义上认不认这个祖宗(手动继承 Object 类),实际上你还是改变不了它是你创建的类的祖宗的事实。

让我们来看看 Object 类 的toString的代码实现:

 Object 类中 toString 方法return的是  =>   getClass().getName()(你的类名) + “@” Integer.toHexString(hashCode())(哈希码)

所以当我们的类没有重写 toString 的是时候,就会打印 出一串类名和哈希码,所以当我想要打印内容的时候就要重写 祖宗类(Object ) 中的toString方法,如下:

又有疑问了: 为啥我的类没有重写toString之前 student.getName() 的打印结果是文本内容呢 ?

啊这......, 等我一会,我去搬救兵......

答: 从图中可知, getName 是获取一个 String 类型的数据,而String 类已经重写了toString方法(具体一源代码可以去了解了解)所以当我们打印的是字符串时,出来的是我们预期的结果。

总计:

就是一句话  “没有重写 Object 类 中的 toString方法是 默认打印出来的就是 类名和哈希码”。

!!! 若有不对的地方,请不要俺面子,直接指出来,让我无地自容 !!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初学者_零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值