特點(diǎn):
(推薦教程:java入門教程)
1、String類是被final修飾的,是不能被繼承的。
2、String類底層使用數(shù)組結(jié)構(gòu)。jdk9以前使用的是char[],jdk9以后使用的是byte[]。
3、String的對(duì)象一旦創(chuàng)建就不能修改,底層維護(hù)了一個(gè)字符串常量池,實(shí)現(xiàn)共享。
注意:String類的對(duì)象每次修改都會(huì)產(chǎn)生一個(gè)新的對(duì)象。
(視頻教程推薦:java視頻教程)
String對(duì)象的拼接
常量池中的字符串常量 + 常量池中的字符串常量 :結(jié)果是存儲(chǔ)在常量池中
String c = "a"+"b"; String ab = "ab"; System.err.println(ab==c); //輸出true123
變量 + 常量池中的字符串常量 : 結(jié)果是存儲(chǔ)在堆中的
String a = "a"; String c = "a"+"b"; System.err.println(c==a+"b"); //輸出false123
如果拼接結(jié)果調(diào)用intern()方法,返回值就在常量池中
String a = "a"; String b = "b"; String c = "a"+"b"; System.err.println(c==a+b); //輸出false,證明String類的拼接中只要有一個(gè)是變量,結(jié)果就存在堆中 String a = "a"; String b = "b"; String c = "a"+"b"; System.err.println(c==(a+b).intern()); //輸出true,說明如果拼接結(jié)果調(diào)用intern()方法,返回值就在常量池中