public class Test { public static void main(String[] args) { String s = new String("aaa"); change(s); System.out.PRintln(s); StringBuilder sb = new StringBuilder("111"); change(sb); System.out.println(sb); } static void change(String s){ s = new String("bbb"); } static void change(StringBuilder sb){ sb.append("333"); }}打印結(jié)果:
aaa111333
=========================================================================================
如上代碼所示,
String s = new String("aaa");其實(shí)就是String s = "aaa";只不過java后臺會自動幫我們封裝;
而這里的change(s),此時就是值傳遞,值傳遞其實(shí)是傳遞的數(shù)據(jù)的拷貝(副本)并不會影響原來的值,在java中8個基本數(shù)據(jù)類型和String類型傳遞均為值傳遞。
==========================================================================================
下面談?wù)勔脗鬟f
如上代碼所示,
StringBuilder sb = new StringBuilder("111"); sb 指向 new StringBuilder("111")
change(sb)的時候是把sb的引用傳遞過去,所以當(dāng)sb修改值的時候,原來的sb也跟著修改,因?yàn)樗麄冎赶虻氖峭粔K內(nèi)存。
在java中,對象之間的傳遞大都是引用傳遞
===================================================================================
以上就是本人對java中的值傳遞和引用傳遞的粗略見解,歡迎各位大神指導(dǎo)批評。
新聞熱點(diǎn)
疑難解答
圖片精選