Java 对象比较

Java 对象比较,java,object,comparison,boolean,Java,Object,Comparison,Boolean,您好,我正在尝试编写一个Java比较程序,该程序使用名为MovieCard的当前对象,并将其与作为参数传递的另一个MovieCard进行比较。代码如下 boolean sameName(MovieCard movieCard) { if(this.MovieCard.equals(movieCard)) return true; } 错误找不到符号-变量MovieCard 如果这有什么区别的话,我的类中会在MovieCard构造函数之前列出检查。另外,我在一个初级编程课

您好,我正在尝试编写一个Java比较程序,该程序使用名为MovieCard的当前对象,并将其与作为参数传递的另一个MovieCard进行比较。代码如下

boolean sameName(MovieCard movieCard) {

    if(this.MovieCard.equals(movieCard))


    return true;
} 
错误找不到符号-变量MovieCard


如果这有什么区别的话,我的类中会在MovieCard构造函数之前列出检查。另外,我在一个初级编程课程中,所以我们不能使用Comparator,它需要包含它。

MovieCard
是一个类,而不是一个变量。这就是编译器告诉你的

if(this.MovieCard.equals(movieCard))
        ↑
你可能只需要写
这个

还请注意,存在一个不返回任何内容的路径,这将不会编译

你应该做:

boolean sameName(MovieCard movieCard) {
    return this.equals(movieCard);
}


MovieCard
是一个类,而不是一个变量。这就是编译器告诉你的

if(this.MovieCard.equals(movieCard))
        ↑
你可能只需要写
这个

还请注意,存在一个不返回任何内容的路径,这将不会编译

你应该做:

boolean sameName(MovieCard movieCard) {
    return this.equals(movieCard);
}


如果这个方法出现在你的
MovieCard
类中,那么只要
这个
就足够了

boolean sameName(MovieCard movieCard) {
    if(this.equals(movieCard)) {// this is enough. this.MovieCard is wrong, as there is no variable by that name.
        return true;
    }
    return false; // Since return true is a conditional return, but the method needs to return in any case.
}
你的方法的简化版本是

boolean sameName(MovieCard movieCard) {
    return this.equals(movieCard); // Returns the result of the comparison.
}
如果查看方法名,
sameName()
,看起来您希望比较类中的某个名称字段,而不是对象本身

boolean sameName(MovieCard movieCard) {
    return this.getName().equals(movieCard.getName()); // Returns the result of the name comparison.
    // But there is a possible NPE in the above statement.
}

如果这个方法出现在你的
MovieCard
类中,那么只要
这个
就足够了

boolean sameName(MovieCard movieCard) {
    if(this.equals(movieCard)) {// this is enough. this.MovieCard is wrong, as there is no variable by that name.
        return true;
    }
    return false; // Since return true is a conditional return, but the method needs to return in any case.
}
你的方法的简化版本是

boolean sameName(MovieCard movieCard) {
    return this.equals(movieCard); // Returns the result of the comparison.
}
如果查看方法名,
sameName()
,看起来您希望比较类中的某个名称字段,而不是对象本身

boolean sameName(MovieCard movieCard) {
    return this.getName().equals(movieCard.getName()); // Returns the result of the name comparison.
    // But there is a possible NPE in the above statement.
}

boolean sameName(MovieCard movieCard) {
    if(this.equals(movieCard))
       return true;
} 
但您的方法似乎是检查两个对象是否具有相同的名称。如果是这样,那么您可以简单地使用

boolean sameName(MovieCard movieCard) {

    if(this.name.equals(movieCard.name))
         return true;
} 
假设name是一个成员变量(字符串)

使用like

boolean sameName(MovieCard movieCard) {
    if(this.equals(movieCard))
       return true;
} 
但您的方法似乎是检查两个对象是否具有相同的名称。如果是这样,那么您可以简单地使用

boolean sameName(MovieCard movieCard) {

    if(this.name.equals(movieCard.name))
         return true;
} 
假设name是一个成员变量(字符串)

您必须编写

boolean sameName(MovieCard movieCard) {
 if (this.equals(movieCard)){
            return true;
        } else{
            return false;
        }
}
因为
this.MovieCard
指向
MovieCard
类中的一个变量

除了语法错误之外,equals实现除了默认实现之外,什么都不做

记住
if(this.equals(movieCard)){
只有当
movieCard
this
指向相同的引用时,这才是正确的

因为,

equals()
类的默认实现由java.lang.Object提供,该类比较内存位置,并且仅当两个引用变量指向相同的内存位置(即本质上是相同的对象)时才返回
true

我想您需要重写
MovieCard
类中的equals方法,以便比较
MovieCard的
字段是否相同

您正朝着错误的方向前进,请参见上面链接中的示例,然后实现equals 如果MovieCard
中的所有字段都等于传递对象的字段,那么这就是您要求的实现

一般来说,对于这样的等式

你必须写作

boolean sameName(MovieCard movieCard) {
 if (this.equals(movieCard)){
            return true;
        } else{
            return false;
        }
}
因为
this.MovieCard
指向
MovieCard
类中的一个变量

除了语法错误之外,equals实现除了默认实现之外,什么都不做

记住
if(this.equals(movieCard)){
只有当
movieCard
this
指向相同的引用时,这才是正确的

因为,

equals()
类的默认实现由java.lang.Object提供,该类比较内存位置,并且仅当两个引用变量指向相同的内存位置(即本质上是相同的对象)时才返回
true

我想您需要重写
MovieCard
类中的equals方法,以便比较
MovieCard的
字段是否相同

您正朝着错误的方向前进,请参见上面链接中的示例,然后实现equals 如果MovieCard
中的所有字段都等于传递对象的字段,那么这就是您要求的实现

一般来说,对于这样的等式


以上给出的所有答案都回答了您的问题,因此我也想补充一下

请记住,调用的
equals
方法属于对象方法。因此,您最好重写
equals
方法以满足程序的需要。重写equals时,请确保也重写
hashcode
方法


以上给出的所有答案都回答了您的问题,因此我也想补充一下

请记住,调用的
equals
方法属于对象方法。因此,您最好重写
equals
方法以满足程序的需要。重写equals时,请确保也重写
hashcode
方法


你确定你想要
this.MovieCard
而不仅仅是
this
?你确定你想要
MovieCard
的属性吗?不是传递给方法的参数,而是属性。谢谢所有提供了很好答案的人!你确定你想要
this.MovieCard
而不仅仅是
this
?你决定了吗laere属性
Moviecard
?不是传递给方法的参数,而是属性。感谢所有提供了伟大答案的人!这也不会编译。在
之后删除
Moviecard
返回此值。等于(Moviecard)
-据我所知,OP的问题是,
sameName
MovieCard
的一种方法。这也不会编译。请在
之后删除
MovieCard
re