Java中 equals 和 ==区别

String s1="abc";//变量仅存在于方法区,

String s2="abc;//变量仅存在于方法区,值相同只保留一份

String s3=new String("abc");//创建两个对象,方法区一份(与之前值相同,只保留一份),堆中一份.

(s1==s2)true;//s1,s2都没有堆地址。方法区变量具有唯一性,共享性(Static 变量同样放入方法区,同样有这个特征)

(s1==s3)false;//s1的方法区地址与s3的堆地址不同,故false

equals true;//比较方法区地址,s1,s2,s3有一个共享方法区地址

另外 hashCode值相同与否,同样先看方法区地址相同与否(与equals优先取地址相同)。

posted @ 2021-03-28 20:44  炬火和光  阅读(50)  评论(0)    收藏  举报