首先明確一點(diǎn):Java是傳值的。
如果參數(shù)是基本類型(包括String,也被認(rèn)為是基本類型),參數(shù)值將會(huì)被copy一份,然后將copy的那份傳到方法中,這樣保證了在方法中修改參數(shù)值時(shí),不會(huì)修改原來(lái)的那份。
如果參數(shù)是對(duì)象,那么copy的就是該對(duì)象的引用值,方法不可以改變這個(gè)引用值,但是可以改變對(duì)象的屬性。
拿個(gè)小例子測(cè)試一下:
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 }
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 }
輸出結(jié)果為: