標籤:
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"); }}
列印結果:
aaa
111333
=========================================================================================
如上代碼所示,
String s = new String("aaa");其實就是String s = "aaa";只不過java後台會自動幫我們封裝;
而這裡的change(s),此時就是值傳遞,值傳遞其實是傳遞的資料的拷貝(副本)並不會影響原來的值,在java中8個基礎資料型別 (Elementary Data Type)和String類型傳遞均為值傳遞。
==========================================================================================
下面談談引用傳遞
如上代碼所示,
StringBuilder sb = new StringBuilder("111"); sb 指向 new StringBuilder("111")
change(sb)的時候是把sb的引用傳遞過去,所以當sb修改值的時候,原來的sb也跟著修改,因為他們指向的是同一塊記憶體。
在java中,對象之間的傳遞大都是引用傳遞
===================================================================================
以上就是本人對java中的值傳遞和引用傳遞的粗略見解,歡迎各位大神指導批評。
淺析java中的值傳遞與引用傳遞