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

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 呢?

慕容708150
浏览 334回答 2
2回答

慕桂英3389331

对于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;}}}

茅侃侃

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);}}
打开App,查看更多内容
随时随地看视频慕课网APP