Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java .equals()如何比较对象?_Java_Class_Object_Junit_Equals - Fatal编程技术网

Java .equals()如何比较对象?

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)

这可能很容易,但我不知道我做错了什么。我正在为已经提供给我的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));
}   
我的测试中已经有了这段代码(请记住,这段代码不仅仅用于此测试,所以我有两个同名的构造函数)

据我所知,如果有多个同名但输入不同的构造函数,它会自动为给定的参数选择合适的构造函数(在本例中,跳过带有布尔值的构造函数)。我这样想是不是错了?我不明白为什么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;
}