Java参数传递
in Java with 0 comment

Java参数传递

in Java with 0 comment

对象和引用的概念:

Java语言当中方法调用的时候涉及到参数传递的问题,参数传递实际上传递的是变量中保存的具体值。

public static void main(String[] args){
  int i = 10;
  add(i);
  System.out.println("main --> " + i);
}
public static void add(int i){
  i++;
  System.out.println("add --->" + i);
}

main 方法中i变量是局部变量,i变量本身占有内存空间,所以i变量本身也有内存地址,i变量中保持的是 10 这个字面值。

add(i);方法在调用的时候,实际上给add方法传递的是main 方法中i这个变量保存的值。与i本身无关。

以下程序如何执行?

public class MainApplication {
  public static void main(String[] args){
    User user = new User();
    user.setName("Rename");// 第一次做修改
    setName(user);
    System.out.println(user.getName());
  }

  public static void setName(User user){
    user.setName("UpYou");// 第二次做修改
    System.out.println("当前 name 值为:" + user.getName());
  }
}

上面程序分别打印出什么结果?为什么呢?

user本身也有内存地址,是局部变量,user变量中保存的那个值,这个值是另一个Java对象在堆内存中的内存地址。

在Java中,方法在调用的时候,参数在传递的时候,传的永远都是变量中保存的那个值。