首页 > 代码库 > 2)==和equals

2)==和equals

==和equals
 
1.如果比较对象是值变量:只用==
 
2.如果比较对象是引用型变量:
     ==:比较两个引用是不是指向同一个对象实例。
     equals:
            首先Object类中equals的实现是直接调用了==操作。
            一个自定义类继承自Object且没有重写equals方法,那么其equals操作也是与Object类一样,仅仅是直接调用==操作。
            如果一个类重写过equals方法(或者继承自一个重写过equals方法的类),那么效果与==操作不同
    
     如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址, 因为自定义的类是继承于object,而object中的equals就是用==来实现的。
 
     API里的类大部分都重写了equals方法。例如String类
          String类型(String本身就是一个类):
               ==:比较两个str是否是指向同一个对象实例。
               equals:比较两个str中的内容是否相同
 
     检查两个引用型变量是否属于同一个Class:instanceof
          System.out.println((obj1 instanceof Student) && (obj2 instanceof Student)) 

2)==和equals