java中 基本类型的参数传递是值传递,即前后两个方法的变量不相干,被调方法参数值改变不影响调用方法的传参数值。
引用数据类型的参数传递是 传递的是参数的地址。即被调方法修改参数值会,调用方法里会跟着改变。如下:
public static void main(String[] args) {
List<String> list = new ArrayList<String>(); list.add("zhangsan"); for(String l :list){ System.out.println(l); } String s = "old"; System.out.println(s+"--------------------"); processList(list,s); for(String l :list){ System.out.println(l); } System.out.println(s+"--------------------"); } static void processList(List<String> list,String str) { list.add("li si"); str+="new"; }
如果想按照引用传递的值,相互不影响呢?方法是在new一个实例就可以了。
public class TempTest {
private void test1(A a){
a = new A();//新加的一行
a.age = 20;
System.out.println("test1方法中的age="+a.age);
}
public static void main(String[] args) {
TempTest t = new TempTest();
A a = new A();
a.age = 10;
t.test1(a);
System.out.println(”main方法中的age=”+a.age);
}
}
class A{
public int age = 0;
} 详细可以参考:http://blog.csdn.net/zzp_403184692/article/details/8184751 介绍的有内存的变化。