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优先取地址相同)。
原文:https://www.cnblogs.com/fire-light/p/14589906.html