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

Java函数的参数传递机制及分类

发布时间:2023-07-02 20:12:47

Java函数的参数传递机制是按值传递。即传递给函数的是实际参数的拷贝,而不是实际参数本身。当我们调用一个函数时,将实际参数的副本传递给函数,函数中对参数进行的操作不会改变实际参数的值。

Java中的参数分为基本类型和引用类型两种。

1. 基本类型参数传递机制:

基本类型的参数传递是将实际参数的值拷贝一份给形式参数。在函数中对形式参数进行修改不会影响到实际参数的值。

例如:

   public static void changeInt(int num) {
       num = 10;
   }
  
   public static void main(String[] args) {
       int num = 5;
       changeInt(num);
       System.out.println(num);  // 输出结果为5,没有改变
   }
   

2. 引用类型参数传递机制:

引用类型的参数传递是将实际参数的副本拷贝一份给形式参数,但实际参数和形式参数指向同一个对象。在函数中如果对形式参数指向的对象进行修改,会改变实际参数指向的对象。

例如:

   public static void changeArray(int[] arr) {
       arr[0] = 100;
   }
  
   public static void main(String[] args) {
       int[] arr = { 1, 2, 3 };
       changeArray(arr);
       System.out.println(arr[0]);  // 输出结果为100,改变了实际参数的值
   }
   

需要注意的是,对于引用类型的参数,虽然可以改变实际参数指向的对象的属性值,但如果在函数中直接将形式参数指向另外一个对象,那么实际参数的值是不会改变的。因为这只是改变了形式参数的引用,对实际参数没有影响。

例如:

public static void changeReference(StringBuilder sb) {
    sb = new StringBuilder("Hello");
}

public static void main(String[] args) {
    StringBuilder sb = new StringBuilder("Java");
    changeReference(sb);
    System.out.println(sb.toString());  // 输出结果为"Java",没有改变
}

总结起来,Java函数的参数传递机制是按值传递,对于基本类型的参数无法直接改变实际参数的值,而对于引用类型的参数,可以改变实际参数指向的对象的属性值,但无法直接改变实际参数的引用。