Java中判断两个类是否相等
当有参数的类生成对象时
当两个对象给的参数相同时,会将第二个对象指向第一个对象的地址
如实例中展示,会输出true
public class test1 {
public static void main(String[] args) {
Myclass one = new Myclass(1);
Myclass two = new Myclass(1);
System.out.println(one.equals(two));
}
}
import java.util.Objects;
public class Myclass {
int value = 0;
public Myclass(int value) {
this.value = value;
}
@Override//方法的重写
//这里的equals方法是基类Object中的
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Myclass myclass = (Myclass) o;
return value == myclass.value;
}
@Override
public int hashCode() {
return Objects.hash(value);
}
}
注意:equal方法既可以重写基类中的,也可以重载(即自定义一个函数)
当没有参数的类生成对象时
每次回产生一个新的对象地址
如实例中展示,会返回false
public class test1 {
public static void main(String[] args) {
Myclass one = new Myclass();
Myclass two = new Myclass();
System.out.println(one == two);
}
}
public class Myclass {
}
判断两个字符串是否相等
String s0 = "Hello";
String s1 = "Hello";
String s2 = "He" + "llo";
System.out.println(s0 == s1);//true
System.out.println(s0 == s2);//true
String s3 = new String("Hello");
String s4 = new String("Hello");
System.out.println(s3 == s4); // false