| 
 
| equals和==的区别 
 ==比较的是两个对象的地址值,还可以用于比较两个原生数据的值是否相等。
 而equals 不能用于比较两个原声数据是否相等,它是用于比较两个对象的。请参考源代码
 public boolean equals(Object cc){
 if(a==b)
 return true;
 else
 return false;
 }
 
 例如
 Person p1=new Person();
 Person p2=new Person();
 System.out.println(p1==p2);//false
 System.out.println(p1.equals(p2));//false
 
 那这样看起来当比较两个对象是否相同时和“==”没什么区别,但是假如有一群学生,我们通过判断他们的年龄
 和姓名如果相等,我们判断这两个学生是同一人,这时如果直接
 Student stu1=new stutent();
 Studnet stu2=new student();
 stu1.equals(stu2)结果为false,这显然不行,所以我们要复写equals方法来判断这两个学生是否为同一人
 
 public class equalsTest
 {
 public static void main(String[] args)
 {
 Student stu1=new Student(20,"xiaoming");
 Student stu2=new Student(20,"xiaoming");
 
 System.out.println(stu1.equals(stu2));//true
 System.out.println(stu1==stu2);//false
 
 System.out.println("...........");
 int a=1;
 int b=1;
 System.out.println(a==b);
 //System.out.println(a.equals(b));
 
 Person p1=new Person();
 Person p2=new Person();
 System.out.println(p1==p2);//false
 System.out.println(p1.equals(p2));//false
 
 }
 }
 
 class Student
 {
 private int age;
 private String name;
 
 Student(int age,String name)
 {
 this.name=name;
 this.age=age;
 }
 
 public boolean equals(Student stu)
 {
 if(this.age==age & this.name==name)
 return true;
 else
 return false;
 }
 }
 
 我是这么理解的 ==用与判断两个对象的地址值是否相同,而equals是用于判断两个对象内容是否相同,我们由于各种需要
 经常要重写Object的equals方法。
 
 
 String类中的equals()方法:
 
 public boolean equals(Object anObject)
 {
 //如果是同一个对象
 if (this == anObject)
 {
 return true;
 }
 //如果传递进来的参数是String类的实例
 if (anObject instanceof String)
 {
 String anotherString = (String)anObject;
 int n = count;//字符串长度
 if (n == anotherString.count) //如果长度相等就进行比较
 {
 char v1[] = value;//取每一个位置的字符
 char v2[] = anotherString.value;
 int i = offset;
 int j = anotherString.offset;
 while (n-- != 0) //对于每一位置逐一比较
 {
 if (v1[i++] != v2[j++])
 return false;
 }
 return true;
 }
 }
 return false;
 }
 
 String类中如何判断两个对象
 
 个人总结:参考源代码可以得知,String类中的equals()方法比较的是两个字符串内容是否相同。
 而== 比较的是两个String对象是否相同
 所以
 String s1=new String("aa");//创建了一个new String()和"aa"两个对象。
 String s2="aa";
 s1==s2;//false
 s1.equals(s2);//true
 | 
 |