String a=new String("ok");
String b=new String("ok");
“==”比较左边,equals比较右边
即“==”是看两个对象在内存中的首地址是否相同
equals是比较两个对象的内容(本身)是否相同
---------------------------------------------------------------
其实只需要知道变量,对象在内存中的样子就很容易理解了。先看图:
因为a与b都是new了一个String 对象,故在堆内存中是开辟的两块空间,并把各自开辟空间的内存首地址保存在变量a,b中
a==b ----》false,“==”看左边。因为a中保存的是第一个对象“ok”的内存地址1056,b中保存的是第二个对象“ok”的地址2314,显然1056!=2314,故返回false
a.equals(b)-->true , equals看右边。即是对 a与b所指向的对象的内容进行比较,a指向的那块内存中的值是“ok”,b指向的那块内存的内容也是“ok”,故他们是在内容上相同的,所以是true
在比较两个变量是否指向同一个对象时用 “==”
在比较两个变量指向的对象的内容是否相同时用equals
"=="看等号左边,equals看等号右边