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