欢迎访问宙启技术站
智能推送

Java中的函数传参方式:值传递和引用传递

发布时间:2023-06-09 08:39:18

Java是一种面向对象的编程语言,支持通过函数来封装代码,实现代码的重用和模块化。函数传参是函数的重要特征之一,Java中的函数参数可以按值传递或者引用传递。本文将详细介绍Java中的函数传参方式,包括值传递和引用传递的概念、特点以及使用方法。

一、值传递

值传递是指函数将实际参数的值复制一份,将复制后的值传递给函数,函数在执行完后再把结果传出来。这种传参方式的特点是:传递的是变量的值,函数内部对参数进行修改不会影响变量的值。Java中的基本数据类型都是按值传递的。

1. 示例

下面是一个值传递的示例:

public class Test {
  public static void main(String[] args){
    int a = 10;
    int b = 20;
    swap(a, b);
    System.out.println("a = " + a + ", b = " + b);
  }
    
  public static void swap(int a, int b){
    int temp = a;
    a = b;
    b = temp;
  }
}

运行结果:

a = 10, b = 20

可以看到,函数内部对参数进行交换后,并没有对实际的变量产生影响,因此结果仍然是a = 10, b = 20。

2. 特点

值传递的特点是:

(1)传递的是变量的值,不会影响变量本身的值。

(2)复制数据会带来性能上的损失,但同时也增强了程序的安全性,避免了被函数修改数据的风险。

(3)Java中的基本数据类型都是按值传递的。

3. 使用方法

使用值传递的方法很简单,只需要在定义函数的时候,将形参的类型定义为基本数据类型即可。例如:

public static void func(int a, double b, char c) {
  // do something
}

二、引用传递

引用传递是指函数将实际参数的地址传递过去,在函数内部对参数进行修改会影响实际变量的值。Java中的引用类型都是按引用传递的,包括对象、数组和类等。

1. 示例

下面是一个引用传递的示例:

class Test {
  public static void main(String[] args){
    int[] arr = {1, 2, 3};
    printArray(arr);
  }
  
  public static void printArray(int[] a) {
    for (int i = 0; i < a.length; i++) {
      System.out.print(a[i] + " ");
    }
    System.out.println();
    a[0] = 100; //在函数中修改参数
  }
}

运行结果:

1 2 3

可以看到,函数中对传递的数组进行了遍历,然后修改了第一个元素的值,由于是引用传递,所以在函数外部的变量arr的值也被修改了。

2. 特点

引用传递的特点是:

(1)传递的是变量的地址,函数内部对参数进行修改时会影响实际变量的值。

(2)Java中的引用类型都是按引用传递的,包括对象、数组和类等。

3. 使用方法

使用引用传递的方法和值传递类似,只需要在定义函数的时候,将形参的类型定义为对应的引用类型即可。例如:

public static void func(int[] a, List<String> b, MyClass c) {
  // do something
}

三、小结

Java中的函数传参方式有两种:值传递和引用传递。值传递是指函数将实际参数的值复制一份,传递给函数,函数内部对参数进行修改不会影响变量的值。引用传递是指函数将实际参数的地址传递给函数,在函数内部对参数进行修改会影响实际变量的值。Java中的基本数据类型都是按值传递的,引用类型都是按引用传递的。使用方法很简单,在定义函数的时候,将形参的类型定义为对应的传参方式即可。