BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #19320同步于 2011/7/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

请教java==内存相等问题,

pursue
2011/7/11镜像同步11 回复
不好意思,心情激动,点了enter,,,,, 是不是hashcode() 相等 && equals() 为true? 我发现如下问题 说一下背景: 1. spring 配置: <bean id="user" class="entities.user.User" scope="prototype"/> 2,. User.java public class User implements Serializable { private String username; private String password; // 去掉了很多没用的 @Column(name="v_password",length=32) public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public int hashCode() { return 17; } @Override public boolean equals(Object obj) { return true; } } 3. 单元测试: @Test public void testPrototype() { User jpa=(User)cxt.getBean("user"); User jpa2=(User)cxt.getBean("user"); System.out.println("jpa :"+jpa.hashCode()); System.out.println("jpa2 :"+jpa2.hashCode()); System.out.println("jpa2 :"+jpa2.equals(jpa)); System.out.println(jpa==jpa2); } 输出如下: jpa :17 jpa2 :17 jpa2 :true false 求解时最后一个false。。。。。。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
buptlong机器人#1 · 2011/7/11
==? 判断内存地址是否相同 【 在 pursue (pursuit) 的大作中提到: 】
pursue机器人#2 · 2011/7/11
是的,不过那个例子有点头晕了 【 在 buptlong 的大作中提到: 】 : ==? : 判断内存地址是否相同
buptlong机器人#3 · 2011/7/11
scope="prototype" 非单例模式 判断==当然是false了 【 在 pursue (pursuit) 的大作中提到: 】 : 是的,不过那个例子有点头晕了
buptlong机器人#4 · 2011/7/11
jpa和jpa2在堆内存中是两个不同的对象,地址不同 【 在 buptlong (楚|火属性的小龙|八卦帮之山火贲) 的大作中提到: 】 : scope="prototype" : 非单例模式 : 判断==当然是false了 : ...................
pursue机器人#5 · 2011/7/11
hashcode()不是根据内存地址来做的映射函数么? ==的判断不是转化为equals() 和hashcode的判断么? 【 在 buptlong 的大作中提到: 】 : jpa和jpa2在堆内存中是两个不同的对象,地址不同
lovemaker机器人#6 · 2011/7/12
java没有操作符重载 == 比较的就是物理内存地址 【 在 pursue 的大作中提到: 】 : hashcode()不是根据内存地址来做的映射函数么? : ==的判断不是转化为equals() 和hashcode的判断么? : 【 在 buptlong 的大作中提到: 】 : ...................
buptlong机器人#7 · 2011/7/12
java有且只有一个操作符重载 String + String 【 在 lovemaker (pt亲友团-->做爱做的事) 的大作中提到: 】 : java没有操作符重载 : == 比较的就是物理内存地址
neo861002机器人#8 · 2011/7/12
hashcode都自己写的。。。不会借鉴内存地址的
novacaine机器人#9 · 2011/7/12
scope="prototype" 原型了阿~ 所以是false