如何理解String?
java中的字符串。 String類是不可變的,對(duì)String類的任何改變,都是返回一個(gè)新的String類對(duì)象。 String 對(duì)象是 System.Char 對(duì)象的有序集合,用于表示字符串。String 對(duì)象的值是該有序集合的內(nèi)容,并且該值是不可變的。
String 是特殊的引用對(duì)象,可以不用new ,就可產(chǎn)生對(duì)象。
例如:
String a="abc";
String b="abc";
String c=new String("abc");
這里一共生成了兩個(gè)對(duì)象。"abc"一個(gè)對(duì)象,new String()一個(gè)對(duì)象。
a,b,c都在棧區(qū)創(chuàng)建了引用,
a,b指向的是常量池中的"abc",new String的值指向的也是常量池中的abc;
※同一個(gè)字符串,只會(huì)創(chuàng)建一次。
例如:
String a="abc";
a=a+"d";
執(zhí)行這個(gè)操作,實(shí)際上產(chǎn)生了3個(gè)對(duì)象,一個(gè)"abc",一個(gè)“d”,一個(gè)“abcd”。
只是當(dāng)拼接完成之后,"abc",“d”都失去了引用,成為垃圾對(duì)象了。
實(shí)際我改變不是"abc"本身,而只是把引用指向了“abcd”;
※對(duì)字符串本身操作時(shí),不是改變了對(duì)象本身,而是改變了引用。