class Student{
private int age;
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
Student(int age,String name){
setAge(age);
setName(name);
}
Student(){}
}
public class Test{
public static void main(String [] args){
Student stu1=new Student(12,"张三");
Student stu2=new Student(12,"张三");
System.out.println(stu1.equals(stu2));
System.out.println(stu1==stu2);
}
}
equals需要重写,不重写则集成父类(Object)的equals,实际也是使用的==。
1.equals的重写需要重写hashCode方法。
2.==判断两个对象(非原型)内存地址是否相同。
equals 是比较对象的 ==是用来比较值的!
1.equals 是当前引用的对象和传进来的对象是否相等。很明显stu1.和stu2是两个对象!两个不同引用地址的值不相等!
2.==是比较两个对象的内存地址是否相等,只有两个对象指向的内存地址相等的时候才会相等!你new的两个student两个内存地址肯定不相等!
Java中,这块和Net不太相同。==与equals针对引用类型时,都要比较地址。