首先明确一点: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 }
输出结果为: