参数传递
参数传递实际上传递的是变量中保存的具体的值(这里的值可能是字面值也可能是令一个Java对象的内存的地址)
例:
-
int i = 10;
int j = i;
//i传递给j,实际上只是将i变量中保存的10传递给j了,j实际上是一块全新的内存空间。 -
User u = 0x1234;
User u2 = u;
//u传递给u2,实际上是将0x1234这个值赋值给了u2,u和u2实际上是两个不同的局部变量,但是它们这两个变量指向堆内存中的同一个Java对象。具体参见下面两例: 例1:
public class CanShuChangeTest01 {
public static void main(String [] args) {
int i = 10;
add(i);
System.out.println("main -->" + i);//10
}
public static void add(int i) {
i++;
System.out.println(i);//11
}
}
例2:
public class CanShuChangeTest02 {
public static void main(String [] args) {
User u = new User(20);
add(u);
System.out.println("main-->" + u.age);//21
}
public static void add(User u) {
u.age++;
System.out.println("add-->" + u.age);//21
}
}
class User{
int age;
public User(int i) {
age = i;
}
}
```cpp