Java直接输出对象变成@.....的问题及解决
Java直接输出对象变成@.....问题
为什么我用System.out.println()输出一个对象会变成@.......的
例如 object.student@1d8d30f7
原因在此
(假设我的对象名是student s =new student ();)
1.以下代码就是System.out.println(),中println,Java的底层代码
public void println(Object x) {
String s = String.valueOf(x);可以发现出现了个String.valueOf(x),这个x此时就等于s也就等于new student ()
2.valueOf(x)的底层源码就是下图
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}这个obj就等于=x=s=new student(),此时return (obj == null) ? "null" : obj.toString();
运用了三元运算符,因为obj不等于null,所以直接执行了表达式三,也就是obj.toString()。
3.toString()的底层源码是
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}这个方法里面只有
return getClass().getName() + "@" + Integer.toHexString(hashCode());
所以在你的控制台里面出现了 @.....什么的
至于为什么,是因为在继承里面有个最终类也就是object,所有的类都直接或者间接继承自object,你在你的类里面没有写toString,他就会默认执行object里面的指定代码
所以.....在你的类里面加个toString方法就好了 ,也就是在被实例化的那个类,在我这篇文章里面是student
解决办法
.eclipse的快捷键是 shift+alt+s
在student里面 按下 shift+alt+s 倒数第四个,选择需要的变量,点击生成,像下图一样,然后就去执行下main方法就好了


总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
使用lombok@Data存在extends时需要注意的问题
在Java编程中,正确实现equals方法是保证对象比较一致性的关键,使用instanceof检查类型可能导致违反对称性原则,即当子类和父类都重写equals时可能出现a.equals(b)不等于b.equals(a)的情况,Lombok的@EqualsAndHashCode注解可以通过callSuper=true参数2024-10-10
mybatis foreach批量插入数据:Oracle与MySQL区别介绍
这篇文章主要介绍了,需要的朋友可以参考下2018-01-01
Intellij IDEA使用restclient测试的教程图解
这篇文章主要介绍了Intellij IDEA使用restclient测试的教程图解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-01-01
解析Springboot集成Tile38客户端之Set命令实现示例
这篇文章主要为大家介绍了解析Springboot集成Tile38客户端之Set命令实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-08-08


最新评论