Java .equals()如何比较对象?
这可能很容易,但我不知道我做错了什么。我正在为已经提供给我的junit测试编写一个java文件,如下所示Java .equals()如何比较对象?,java,class,object,junit,equals,Java,Class,Object,Junit,Equals,这可能很容易,但我不知道我做错了什么。我正在为已经提供给我的junit测试编写一个java文件,如下所示 public void testEquals() { LogicVariable a = new LogicVariable("Y1"); LogicVariable b = new LogicVariable("Y1"); assertTrue(a.equals(b)); // same name assertTrue(a.equals((Object)b)
public void testEquals() {
LogicVariable a = new LogicVariable("Y1");
LogicVariable b = new LogicVariable("Y1");
assertTrue(a.equals(b)); // same name
assertTrue(a.equals((Object)b));
}
我的测试中已经有了这段代码(请记住,这段代码不仅仅用于此测试,所以我有两个同名的构造函数)
据我所知,如果有多个同名但输入不同的构造函数,它会自动为给定的参数选择合适的构造函数(在本例中,跳过带有布尔值的构造函数)。我这样想是不是错了?我不明白为什么a和b是不同的,因为它们都是只有名称的对象
感谢您的帮助如果您不重写equals,它只会比较引用。该帖子的回答比这里要求的要多一些,但确实回答了这个问题:“当且仅当x和y引用同一个对象(x==y的值为true)时,此方法才返回true”。此外,它还有一些有用的信息。如果您不重写equals,它只是比较引用。这篇文章的回答比这里要多一些,但确实回答了这个问题:“当且仅当x和y引用同一个对象(x==y的值为true)时,此方法才返回true”。同样,它还有一些有用的信息。
public class LogicVariable {
protected String name;
protected boolean value ;
public LogicVariable(String name) {
this.name = name;
}
public LogicVariable(String name, boolean value) {
this.name = name;
this.value = value;
}