举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > java参数传递的两种方式 Java 参数传递

java参数传递的两种方式 Java 参数传递

2023-03-24 19:20 Java教程

java参数传递的两种方式 Java 参数传递

java参数传递的两种方式

Java参数传递是指在Java程序中,将一个变量或者对象从一个方法传递到另一个方法的过程。Java中有两种不同的参数传递方式:值传递和引用传递。

值传递是指在调用函数时,将实际参数的值复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。例如:

public static void main(String[] args) { 
    int a = 10; 
    System.out.println("Before change, a = " + a); 
    change(a); 
    System.out.println("After change, a = " + a); 
} 
public static void change(int b) { 
    b = 20; 
}

上面代码中change()方法是使用值传递的方式来调用的,执行后输出结果为:Before change, a = 10 After change, a = 10 可以看到change()方法对b的修改并没有影响到main()方法中a的值。

引用传递是指在调用函数时,将实际参数的地址复制一份传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。例如:

public static void main(String[] args) { 
    int[] arr = {1, 2, 3, 4}; 
    System.out.println("Before change, arr[0] = " + arr[0]); 
    change(arr); 
    System.out.println("After change, arr[0] = " + arr[0]);   }   public static void change(int[] b) {   b[0] = 10; }

上面代码中change()方法是使用引用传递的方式来被被访问的,执行后输出结果为:Before change, arr[0] = 1 After change, arr[0] = 10 可以看到change()方法对b[0] 的修改影响了main() 方法中arr[0] 的值。

Java 参数传递

Java面向对象设计 - Java参数传递


Java支持两种数据类型:基本数据类型和引用数据类型。

原始数据类型是一个简单的数据结构,它只有一个与之相关的值。引用数据类型是一个复杂的数据结构,它表示一个对象。

原始数据类型的变量将该值直接存储在其存储器地址处。

使用对象和引用变量时,事情会有所不同。

Java中的所有参数都通过值传递。

当参数是原始数据类型时,实际参数的值将复制到参数中。

对方法主体中的参数值进行的任何更改只会更改形式参数的副本,而不会更改实际参数的值。

当参数通过参考值传递时,存储在实际参数中的参考被复制到形式参数。实际参数和形式参数都指向内存中的相同对象。

您可以将另一个对象的引用分配给方法主体中的形式参数。

例子

下面的代码演示了Java中的引用传递机制。

class Phone {
  public String model = "Unknown";
  public int year = 2014;
  public double price = 0.0;
}

public class Main {
  public static void main(String[] args) {
    Phone myPhone = new Phone();

    myPhone.model = "iPhone";
    myPhone.year = 2009;
    myPhone.price = 16000.0;

    System.out.println("#1: model  = " + myPhone.model + ", year   = "
        + myPhone.year + ", price = " + myPhone.price);

    Main.test(myPhone);

    System.out.println("#4: model  = " + myPhone.model + ", year   = "
        + myPhone.year + ", price = " + myPhone.price);
  }

  public static void test(Phone xPhone) {
    System.out.println("#2: model  = " + xPhone.model + ", year   = "
        + xPhone.year + ",  price = " + xPhone.price);

    // Let"s make xyCar refer to a new object
    xPhone = new Phone();

    System.out.println("#3: model  = " + xPhone.model + ", year   = "
        + xPhone.year + ", price = " + xPhone.price);
  }
}

上面的代码生成以下结果。

注意

当引用类型参数传递给方法时,形式参数可以访问对象,实际参数可以访问该对象。

形式参数可以通过直接更改实例变量的值或通过调用对象上的方法来修改对象。

通过形式参数对对象进行的任何修改都可以通过实际参数立即可见,因为它们都保存对内存中同一对象的引用。

形式参数本身可以被修改以引用方法内的另一个对象。

要禁用将引用类型形式参数更改为引用不同对象的方法,请在引用类型形式参数声明中使用关键字final

public class Main {
  public static void main(String[] args) {
    Phone myPhone = new Phone();

    myPhone.model = "iPhone";
    myPhone.year = 2009;
    myPhone.price = 16000.0;

    Main.test(myPhone);
  }

  public static void test(final Phone xPhone) {
    System.out.println("#2: model  = " + xPhone.model + ", year   = "
        + xPhone.year + ",  price = " + xPhone.price);

    // Let"s make xyCar refer to a new object
    //xPhone = new Phone();
  }
}
class Phone {
  public String model = "Unknown";
  public int year = 2014;
  public double price = 0.0;
}

上面的代码生成以下结果。

阅读全文
以上是名动网为你收集整理的java参数传递的两种方式 Java 参数传递全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们