返回信息流不好意思,心情激动,点了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。。。。。。
这是一条镜像帖。来源:北邮人论坛 / java / #19320同步于 2011/7/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
请教java==内存相等问题,
pursue
2011/7/11镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
scope="prototype"
非单例模式
判断==当然是false了
【 在 pursue (pursuit) 的大作中提到: 】
: 是的,不过那个例子有点头晕了
jpa和jpa2在堆内存中是两个不同的对象,地址不同
【 在 buptlong (楚|火属性的小龙|八卦帮之山火贲) 的大作中提到: 】
: scope="prototype"
: 非单例模式
: 判断==当然是false了
: ...................
hashcode()不是根据内存地址来做的映射函数么?
==的判断不是转化为equals() 和hashcode的判断么?
【 在 buptlong 的大作中提到: 】
: jpa和jpa2在堆内存中是两个不同的对象,地址不同
java没有操作符重载
== 比较的就是物理内存地址
【 在 pursue 的大作中提到: 】
: hashcode()不是根据内存地址来做的映射函数么?
: ==的判断不是转化为equals() 和hashcode的判断么?
: 【 在 buptlong 的大作中提到: 】
: ...................
java有且只有一个操作符重载
String + String
【 在 lovemaker (pt亲友团-->做爱做的事) 的大作中提到: 】
: java没有操作符重载
: == 比较的就是物理内存地址