具体来说,在对象引用相等的情况下,==运算符会做什么?
如果引用在比较时计算到同一个对象地址,那么比较是否返回true?或者它是否利用两个引用的hashCode值来确定对象是否相同?
在这里非常具体,我想知道由==操作引用JVM管理的数据结构以进行参考比较.==依靠OOP进行参考比较?
不幸的是,JLS没有定义==运算符必须如何工作.Java API文档没有提到==应该做什么(它们是针对类的,对吗?)
PS:我对这个关于哈希码唯一性的问题有点兴趣,并且更愿意知道Sun JVM(或OpenJDK)如何实现==运算符.
Ree*_*sey 10
==运算符只是比较引用.
JVM中的引用只是一个标准的对象指针.这适用于单个32位或64位整数值(取决于平台).
当你比较两个对象引用时,你真的只是比较两个32位或64位整数,如果它们是相同的,你将等于相等.整数值是内存中的位置.
| 归档时间: |
|
| 查看次数: |
2662 次 |
| 最近记录: |