当前位置:  技术问答>java相关

两个对象相等的意义是什么?

    来源: 互联网  发布时间:2015-11-20

    本文导语:  两个对象相等(o1==o2 为true)的意义是什么? 是o1和o2所有成员变量都相等就为true 还是o1和o2是同一个对象是才为true? | later one actually,they have same hashcode | 有相同的句...

两个对象相等(o1==o2 为true)的意义是什么?
是o1和o2所有成员变量都相等就为true
还是o1和o2是同一个对象是才为true?

|
later one
actually,they have same hashcode

|
有相同的句柄

|
两个句柄指向的实例是同一个
改变其中一个,另一个也跟着变了
好比两个钥匙对应同一一个房间

|
这个问题涉及到几个方面。
如果o1,o2的equals()没有被重载,那么o1==o2 为true
意味着o1,o2指向内存中的同一个对象实例。
如果o1,o2的equals()被重载过,那么结果取决于被重载
equals()方法。

|
一般比较对象就是比较hashcode

|
agree hotenM(CMP) 

o1 == o2 相当于 o1.hashcode() == o2.hashcode() 
是否指向同一个内存地址

|
"=="如果是对象的比较则是两个对象的指针指向同一内存空间,如果为基本简单类型变量,则为不同内存空间的内容相同。

|
同一个对象

|
内存地址相同

|
up
楼上说的非常对

|
因为jvm对于hashcode()的实现就是取得这个对象的地址,所以可以作为对象相等的标志(除非你重载了hashcode(),哈哈)

|
如果没有重载hashcode,hashcode相等就对象地址一定相同吗?我没看过jvm源码,只是心存疑虑。

|
== 比较两个object的references,
equals()比较他们的content

|
这肯定是同一个对象撒,它们在内存中是占同一个存储单元,其中你改变其中一个另一个也会跟着一起变。

|
to crm2000
即使没有重载hashcode,hashcode 相等也并不意味对象的地址一定相等
这取决于jvm的实现。当然sun的jvm是以内存地址作为hashcode的

    
 
 

您可能感兴趣的文章:

  • awk提取两个关联数组里相等的元素
  • 两个String怎样看是否相等?
  • 这两个字符串为什么不相等?
  • jsp中如何判断两个字符串不相等?
  • 小妹这里有个问题请教:为什么这两个字符串不相等?
  • 看看会输出什么?结果是equal b,==在string里不是比较两个串是不是相等嘛?
  • 比较两个字符串是否相等的shell代码
  • awk问题,求教了,似乎判断语句有问题,不能识别两个数相等
  • 你们看是不是可以这样理解:在用来进行两个对象的比较时,==操作符用来比较两个对象的引用地址,而equals()用来比较两个对象的值。
  • 任何比较两个StringBuffer对象是否相同
  • 一个比较笨的问题:如何用两个Vector对象动态生成一个JTable?及从JTable里取得数据。
  • 两个简单问题:在javaBean中能用out.println()输出页面吗?javaBean中可以使用servlet建立的session对象变量值吗?
  • 一个指针指向两个对象?
  • 连续创建两个同名对象,我该怎么用?
  • 什么情况下两个对象可以用“==”或者“!=”来比较啊?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ MultiMaps 成员 swap():交换两个multimaps
  • 急!有两个char buf[]里面是两个日期(2004-08-02),怎样判断两个日期之间的天数?(只能用标准C)
  • C++ Lists(链表) 成员 merge():合并两个list
  • 一个Statement不能同时打开两个ResultSet?为了同时打开两个,可以考虑建立两个Statement?甚至两个Connection?
  • C++ Lists(链表) 成员 swap():交换两个list
  • Keepalived 能配两个虚拟ip吗,匹配两个数据库实例?
  • C++ Maps 成员 swap():交换两个map
  • 可以有其他两个类的实例同时调用一个java实例的两个方法吗?
  • C++ Vectors 成员 swap():交换两个Vector
  • 两个域名,两个端口,一个服务器……
  • C++ Lists(链表) 成员 splice():合并两个list
  • 下载了jbuilder5,是rar格式的,解开后有两个文件,一个是rsc-jb5.bin,一个是rsc-jb5.cue,据说这两个文件是刻光盘的,请问谁知道怎么刻?不会用这两个文件直接安装吧?谢谢!
  • C++ Strings(字符串) 成员 swap():交换两个字符串的内容
  • 基础问题,刚学的!请教,两个日期格式变量,我要求两个日期之间的天数,怎么求?
  • C++ Strings(字符串) 成员 compare():比较两个字符串
  • 主进程有两个线程,fork子进程后复制主进程两个线程的内存么?
  • cocos2d中CCSpriteFrameCache文件同时存在两个plist的问题解决
  • 我机器上安装了linux和win2000两个系统,请问如何在两个系统之间切换。
  • linux字符模式下怎样可以运行两个任务(开两个终端)
  • 听说,初学JAVA有两个开源程序是必看的,请问是哪两个。在那里下载?
  • 由同一个服务端创建两个线程分别向两个客户端同时发送不同的数据···


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3