public static void main(String[] args){
String a=new String("aa");
String b=new String("aa");
Person p1=new Person("aa",12);
Person p2=new Person("aa",12);
System.out.println(a.equals(b));
System.out.println(p1.equals(p2));
}
运行结果:第一个结果是true,而第二个是false
一般来说为了比较两个变量是否相等的话,基本类型的变量用“==”号。
而引用类型的变量就不能用这个了。当比较引用类型变量时,你用==的话,比较的是两个变量是不是同一个对象,如果是同一个对象,则返回true,否则返回false。
比如代码:
Person p1=new Person("aa",12);
Person p2=new Person("aa",12);
p1和p2的成员变量一样,但是是两个不同的对象,所以p1==p2返回的就是false。
而equals()是一个方法,是object类的方法。默认的效果和==是一样的,只有两个变量指向同一个对象时,才返回true。
所以直接使用 System.out.println(p1.equals(p2));,输出的是false。
而String类(字符串)重写了equlas()方法(java中继承方面的特点)。
但是Person类应该没有重写这个方法,直接是默认的,肯定返回的是默认的!