首先明確一點:Java是傳值的。
如果參數是基本類型(包括String,也被認為是基本類型),參數值將會被copy一份,然后將copy的那份傳到方法中,這樣保證了在方法中修改參數值時,不會修改原來的那份。
如果參數是對象,那么copy的就是該對象的引用值,方法不可以改變這個引用值,但是可以改變對象的屬性。
拿個小例子測試一下:
1 import java.util.List;
2 import java.util.ArrayList;
3 import java.lang.StringBuffer;
4
5 public class Test {
6
7 public static void main(String args[]) {
8 List aList = new ArrayList();
9 String str = "Hello,";
10 StringBuffer sb = new StringBuffer().append("Hello,");
11
12 aList.add(str);
13 aList.add(sb);
14
15 System.out.println(aList.get(0));
16 System.out.println(aList.get(1));
17
18 str = "World!";
19 sb.append("World!");
20
21 System.out.println(aList.get(0));
22 System.out.println(aList.get(1));
23 }
24 }
輸出結果為:
