java中将一个对象(不算String这类的对象)直接打印出来,得到的是什么啊? 看不懂~!
比如我随便写一个类,然后new一个对象出来,直接打印这个对象。
我发现,博客园的博问空间,真的只是留给小白提一些类似你这种问题的。稍微有点技术难度的,很难找到解决方案。好吧,我再送你一题。
我在想,你应该在用System.out里的方法进行的“打印”。诚如二楼所说,这样的输出方式在print的时候会调用被print对象的toString()方法。
toString()方法是java所有对象都有的方法(因为在根类Object中声明的该方法),而不只是String对象才有,只不过诸如String对象,Date对象都重写了属于自己的toString方法,这样你在print的时候才会看到对应的字符串和日期。
如果不重写,默认输出的是什么玩意儿就根本不重要了,因为你离需要理解这个东西还有很远的路要走。简单点说,哈希码是通过哈希算法计算出来的东西。哈希算法是不限定语言,也不限定领域的,也就是说你不仅仅会在java,C等“高级编程语言”中看到它,你还会在航空领域的信息加密,大数据领域的快速查找等等方面看到它。我掐指一算,哈希算法有一万种~
而java对象层面的哈希算法是可以与对象所分配的内存地址有一定关系的。你可以这样理解,如果说对象分配的内存地址为x,那其对应的哈希码就为Ax。当然也可以与对象所分配的内存地址没有任何关系,这基于不同JVM产商的实现(不要问我JVM的问题,JVM无论是规范还是教程,加起来近千页的书,自己有空去读一读《深入理解Java虚拟机(周志明著)》),毕竟哈希码对于JVM而言只用在诸如获取(释放)锁和GC等过程中的对象快速分辨,并不指着该对象的哈希码找到对象的具体位置。
好的 谢谢了 我知道了
总之我这人就是这个性格·! 不会先想,想不到就问。不会不懂装懂的就那样过去,哪怕问题对于人们来说是很简单的问题都一样·!~!
@梦再笑:愿你早日封神~
@Feng_zhulin: 谢谢, 我会努力的~!
@Feng_zhulin 说的真6,咋们交个朋友吧,qq2762972542
getClass().getName() + '@' + Integer.toHexString(hashCode())
麻烦你给我能说下 哈希码值和地址之间的关系吗? 谢谢了
他会调用tostring方法.
谢谢了,这个好像输出的是哈希码吧? 哈希码和地址的区别是什么啊?望大神指点指点~!谢谢了
@梦再笑: 哈希码和地址有个啥关系..没关系又有个啥区别..
别老想些有的没的.好好学语法.
@吴瑞祥: 恩 谢谢了 我知道了