对于其字段仅为原始的类,例如:
class Foo
{
int a;
String b;
boolean c;
long d;
boolean equals(Object o)
{
if (this == o) return true;
if (!(o instanceof Foo)) return false;
Foo other = (Foo) o;
return a == other.a && b.equals(other.b) && c == other.c && d = other.d;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个合理的"足够好"的写作方式hashCode()吗?
boolean hashCode()
{
return (b + a + c + d).hashCode();
}
Run Code Online (Sandbox Code Playgroud)
也就是说,我构建了一个使用String相同的字段,equals()然后使用String#hashCode().
编辑: 我已更新我的问题以包括一个long字段.应如何long处理hashCode()?只是让它溢出int …
我想在java中这样做
if(request.getParameter("page") == "page1")
// page1
else if(request.getParameter("page") == "page2")
// page2
Run Code Online (Sandbox Code Playgroud)
对于刚接触java的人,为什么上面的代码不起作用,以及在上面做我想做的最好的方法是什么?
让我们看看我们有2个用户定义类的实例的引用,Java中的a和b.是否会出现a == b但a.equals(b)返回false的情况?
我有两个不同的同一实体"社区"对象
两个对象(社区和com)具有相同的值
Communty.java有以下变量:
private Integer communityId;
private String communityName;
private String description;
// many to many relationship
private Set<Faculty> faculties = new HashSet<Faculty>();
private Set<User> users = new HashSet<User>();
Run Code Online (Sandbox Code Playgroud)
我用同样的方法:
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
if(obj==null)
return false;
if(obj==this)
return true;
if(!(obj instanceof Community)) return false;
Community community = (Community)obj;
return community.getCommunityId() == this.getCommunityId();
}
Run Code Online (Sandbox Code Playgroud)
当我检查时community==com,它返回false ..为什么?我做错了什么?从数据库中检索这两个对象!
在 .NET 中,在比较 Type 对象时我可以不用 == 。是否可以使用相同的运算符来比较 Java 中的 Class 对象,还是应该始终使用 equals() 方法?
我有个问题.我不知道这有什么意义,但我真的需要一个答案
当我使用"=="作为
Integer i1 =10;
Integer i2 = 10;
if(i1 == i2) {System.out.println("same object")}
Run Code Online (Sandbox Code Playgroud)
output =同一个对象
但是,如果我使用"=="
String obj1 = new String("xyz");
String obj2 = new String("xyz");
if(obj1 == obj2)
System.out.println("obj1==obj2 is TRUE");
else
System.out.println("obj1==obj2 is FALSE");
Run Code Online (Sandbox Code Playgroud)
输出= FALSE
我知道"=="运算符会查找对象的内存位置.但是在第一个例子中发生了什么 i1和i2不是不同的对象?