不要再被java是传值还是传引用而混淆视听了,remember!java全部都是值传递!
基本数据类型 int char ,和 String 都是传递的copy值。 例如int a=521 那么传值就是521这个数值;
对象类型 也叫引用类型(我呸 去他妹的“引用”,把这个概念从脑海里删除。),也是传值, 注意 这里说的传值 不像int a= 521的值,而是被分配内存物理地址的值。
解释一下,基本类型传值被处理后,不会改变原有的数据,对象类型传过去地址值之后,会随着处理类对该地址的内存块数据的处理,该对象有可能会被更改。但是该内存块的物理地址是 海枯石烂的时候都不会改变的。
下面这个例子能说出运行结果 你就醍醐灌顶了:
public class AAtest2 {
public int i=10;
}
public class AAtest {
public static void main(String a[]){
AAtest aatest = new AAtest();
aatest.amethod();
}
public void amethod(){
int i = 99;
AAtest2 v = new AAtest2();
v.i=30;
another(v,i);
System.out.println(v.i);
}
public void another(AAtest2 v, int i){
i=0;
v.i = 20;
AAtest2 vh = new AAtest2();
v = vh;
System.out.println(v.i+ " "+i);
}
}
答案是 : 10 0 20