==用来比较java中基本类型的值,也用来比较变量引用内存中的值。

如果变量引用的是一个对象,如String str=new String("ylsd"),则此时str在java中占一块内存,new String("ylsd")在堆内存中占一块内存,存储的值为“ylsd”,而str占的内存中存储的值为new String("ylsd")对象所在内存的首地址。

如果变量引用的是对象,用==比较时比较的是引用对象的首地址的值是否相等,即两个变量引用的是否为同一对象。

equals比较的是对象的值是否相等,值得注意的是,若是没有重写equals方法,则对象自动集成Object的equals方法,而Object的equals方法为==,String重写了equals方法,比较的是对象的内容是否相等。

因此在实际使用中,如果我们要比较两个字符串的值是否相等,应该用equals方法,如果要比较两个变量的引用是否为同一对象,用==,我们自定义的对象想用equals比较时,需要重写equals方法。