首先,思考一下以下代碼有什么區(qū)別:
String s1 = "abc";
String s2 = new String("abc");
看一下這兩段代碼的運(yùn)行結(jié)果,會(huì)不會(huì)有所感悟呢?
??????看了這兩段代碼。你會(huì)覺得,同樣是判斷兩者的地址,為什么兩者的結(jié)果不同?首先,我們可以看到,String s4 = new String("def");這條語句其實(shí)創(chuàng)建了兩個(gè)對(duì)象,一個(gè)new,一個(gè)字符串對(duì)象,它們存在堆內(nèi)存中。String s3 = "def";該類類型變量存放在字符串常量池中,它是可以被共享的,因此第一段代碼顯示的結(jié)果是相同的。
注意:System.out.println(s3.equals(s4));//true
????????因?yàn)镾tring類將equals()方法復(fù)寫啦!

