在形参调用中 java的基本数据类型及其包装类型是传值调用,其他对象引用类型是传引用。
形参调用的时候:
* 基本类型和包装类型 相当于传了一个复制的值过去,方法内的运算不会回传,不会改变原参数的值。
* 引用对象类型 则传递了对象的引用,方法内的运算会使对象的属性发生变化。
基本类型和包装类型
//基本类型和基本类型的包装类型
//方法内的形参,只是复制了一份对象,并非传递了对象或引用
Integer i = new Integer(0);
@Test
public void run4() {
System.out.println("获取i值, i="+i);
//调方法传参数 i,进行i++
scope(i);//方法内i值变化了,方法外并未变化
System.out.println("run4方法内 调scope方法i++后, i="+i);
i++;//run4 方法内的 i++ 确实的改变了成员变量i的值
System.out.println("run4方法内 i++后,i="+i);
System.out.println("获取i值, i="+i);
}
public void scope(Integer i){
i++;
System.out.println("scope方法内 i++后, i="+i);
}
运行结果:
获取i值, i=0
scope方法内 i++后, i=1
run4方法内 调scope方法i++后, i=0
run4方法内 i++后,i=1
获取i值, i=1
引用对象类型:
class Letter {
char c;
}
public class PassObject{
static void f(Letter y){
System.out.println("y.c:"+y.c);
y.c = 'z';
}
public static void main(String[] args) {
Letter x = new Letter();
x.c = 'a';
System.out.println(x.c);
f(x);
System.out.println(x.c);
}
}
运行结果:
a
y.c:a
z