java中equals与==的使用


   下面用个小例子记录一下

package lianxi1;

public class lianxi1 {

    public static void main(String[] args) {

            String s1 = "chaoren";
            String s2 = "chaoren";
            String s3 = new String("chaoren");

            
                System.out.println(s1 == s2);
         
                System.out.println(s1 == s3);
           
                System.out.println(s1.equals(s3));
           
            
            }

            

}

对应的结果是
true
false
true

   “==”比较的是2个数据引用的是否是同一位置,equals比较的是内容是否一样。

    这里有一点需要了解在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,

    但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

    在以后熟悉做项目时候,你会发现只要是自己的生成的实体类中都会重写equals方法。

         这里的s2和s1引用的同一个位置,所以比较为true。

    s3是新生成的一个对象,只能在equals的情况下才为true。