public class demo8 {
void fun1(int i, int j) {
i = i + 5;
j = j + 5;
System.out.println(“fun1-i:” + i);
System.out.println(“fun1-j:” + j);
}
void fun1(P y) {
y.i = y.i + 5;
y.j = y.j + 5;
System.out.println("fun1-y-i:" + y.i);
System.out.println("fun1-y-j:" + y.j);
}
public static void main(String[] args) {
demo8 x = new demo8();
int i = 10;
int j = 20;
x.fun1(i,j);
System.out.println("main-i:" + i);
System.out.println("main-j:" + j);
System.out.println("================");
P y = new P();
y.i = 10;
y.j = 20;
x.fun1(y);
System.out.println("main-y-i:" + y.i);
System.out.println("main-y-j:" + y.j);
}
}
class P {
int i;
int j;
}
- 在栈区储存
- 在栈区中创建参数的副本
- 对副本进行操作
在对基本类型的值进行操作后,原始值,不受影响
当方法中的参数是引用类型
1.
- 在栈区创建类在堆区的副本,并且这个副本还是指向之前的堆区地址
- 对类在堆区储存的属性和方法进行操作
引用类型的值进行操作,原始值会发生变化