debug时对象的值是类名@数字是什么意思?

debug时对象的值是类名@数字是什么意思?
详见图片红箭头
图片说明

hashcode 图片说明

你随便打印一些对象(直接随便写一个类,然后打印),你就会发现top.whbweb.mqtt.util.RSA@3e6fa3这样的字符串被打印到控制台了
这个字符串是什么鬼呢,跟踪到println的源码中发现 String.valueOf(x);他将对象转为了字符串,跟踪进去发现return (obj == null) ? "null" : obj.toString();这里调用了toString() 将object转为了字符串
找到Object的toString方法,我们发现, return getClass().getName() + "@" + Integer.toHexString(hashCode());这里打印的内容为对象名称和int型的Hex码,所以你这里的数据其实就是对象的Hex码

16进制的hashcode值

实例的hashcode

代表这个方法所在文件的具体行数

代表这个方法所在文件的具体行数,你可以看看上面那位哥的图

@数字实例编号 就是ID啦

调试代码的具体行数,这个会在二进制代码中有记录

这个要看你用什么IDE,ecilpse和IdeaJ可能是不同的。

要看用什么IDE,ecilpse和IdeaJ可能不同

是这个实例的hashcode,在类变量声明时会自动继承object的tostring方法,显示的正是实体类的tostring方法。可以重写下tostring方法,就会变化为你想要的输出方式了。