为了账号安全,请及时绑定邮箱和手机立即绑定

使用语法,关于equals()方法和“==”区别?如下情况

使用语法,关于equals()方法和“==”区别?如下情况

慕容708150 2021-05-18 18:11:44
public class TestHashCode {public static void main(String[]args){int i=5,j=5;System.out.println(i==j);Person p1=new Person(0);Person p2=new Person(0);if(p1==p2){System.out.println("p1==p2");}else {System.out.println("p1!=p2");}if(p1.equals(p2)){System.out.println("p1 is equals to p2");}else{System.out.println("p1 is not equals to p2");}p2=p1;System.out.println(p1==p2);System.out.println(p1.equals(p2));}}equals()比较内容 “==”比较地址,为什么p1.equals(p2)为false 呢?
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

对于Person类的2个实体化对象P1与P2来说,他们被new出来后,占用的是不同的存储单元的,所以他们的地址并不相同,因此p1.equals(p2)为false 。
如果需要返回的结果为true,你必须重写equals方法。
例如在Person类里面重写equals方法(假设Person里面成员变量i的值相等就可以认为两个对象相等):
public boolean equals(Person p) {
if(this.i == p.i) {
return true;
} else {
return false;
}
}
}

查看完整回答
反对 回复 2021-05-23
?
茅侃侃

TA贡献1842条经验 获得超21个赞

equals 和 == 的区别
*
* @author FlyFive(pengfei.dongpf@gmail.com)
* created on 2013-1-5
*/
public class EqualsTest {
public static void main(String[] args) {
String s01 = new String("hello world");
String s02 = new String("hello world");
System.out.println("两个new出来的String");
System.out.println(s01.equals(s02));
System.out.println(s01 == s02);
String s11 = new String("hello world");
String s12 = s11;
System.out.println("两个相同的String");
System.out.println(s11 == s12);
System.out.println(s11 == s12);

String s21 = "hello world";
String s22 = "hello world";
System.out.println("两个直接赋值的String");
System.out.println(s21.equals(s21));
System.out.println(s21 == s22);
Object s31 = new Object();
Object s32 = new Object();
System.out.println("两个new出来的普通对象");
System.out.println(s31.equals(s31));
System.out.println(s31 == s32);
Integer s41 = new Integer(1);
Integer s42 = new Integer(1);
System.out.println("两个new出来的基本类型包装类");
System.out.println(s41.equals(s41));
System.out.println(s41 == s42);
}
}



查看完整回答
反对 回复 2021-05-23
  • 2 回答
  • 0 关注
  • 437 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信