一直以为引用对象作为参数传递到方法内部时可以被改变,却忽略了细节。。。
形参是基本数据类型,方法内部改变其值不影响方法调用处的值
形参是引用类型,方法内部内部对其重新赋值不影响方法调用处的对象,若方法内部改变了对象中的属性值,则方法调用处的对象中的属性值也改变了
package quan.java.Base;
import java.util.ArrayList;
import java.util.List;
public class MethodParamTest {
public static void main(String[] args) {
System.out.println("==========baseType============");
int i = 0;
baseTypeTest(i);
System.out.println(i);
System.out.println();
System.out.println("==========referenceType============");
List list = new ArrayList();
list.add("String");
referenceTypeTest(list);
for(Object obj : list) {
System.out.println(obj);
}
System.out.println();
System.out.println("==========arrayType============");
String[] strArray = new String[5];
strArray[0] = "java";
arrayTypeTest(strArray);
for(String str : strArray) {
System.out.println(str);
}
System.out.println();
}
private static void baseTypeTest(int i) {
i = 5;
}
private static void referenceTypeTest(List list) {
list = new ArrayList();
list.add(1);
}
private static void arrayTypeTest(String[] strArray) {
strArray = new String[5];
strArray[2] = "TEST";
}
}
修改代码
private static void referenceTypeTest(List list) {
// list = new ArrayList();
list.add(1);
}
private static void arrayTypeTest(String[] strArray) {
// strArray = new String[5];
strArray[2] = "TEST";
}