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

生动讲解Java函数传参的几种方式

发布时间:2023-06-08 08:10:41

Java函数传参是在函数调用的时候向函数传递数据的过程,常用的传参方式有值传递和引用传递两种。本篇文章将详细介绍Java函数传参的几种方式,包括传值方式、传引用方式以及传递数组和对象等方式。

1. 值传递

值传递是将实参的值复制给形参的过程,改变形参的值不会影响实参的值。Java中的基本数据类型(int、double等)就是值传递的例子。

// 值传递的示例

public class Test {

   public static void main(String args[]) {

      int x = 10;

      int y = 20;

      swap(x, y);

      System.out.println("x = " + x +", y = " + y);

   }

   public static void swap(int a, int b) {

      int temp = a;

      a = b;

      b = temp;

   }

}

运行结果为:x = 10, y = 20。这是因为swap函数对a、b进行操作,并不会改变x、y的值。

2. 引用传递

引用传递是将实参的引用(地址)复制给形参的过程,形参和实参指向同一块内存地址,改变形参的值会影响实参的值。Java中的对象就是引用传递的例子。

// 引用传递的示例

public class Test {

   public static void main(String args[]) {

      Dog myDog = new Dog("Kiki");

      changeName(myDog);

      System.out.println("My dog's name is " + myDog.getName());

   }

   public static void changeName(Dog aDog) {

      aDog.setName("Jimmy");

   }

}

class Dog {

    private String name;

    public Dog(String name) {

        this.name = name;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

}

运行结果为:My dog's name is Jimmy。这是因为changeName函数对aDog的属性进行了修改,同时也修改了myDog的属性值。

3. 传递数组

Java中的数组也是对象,也是引用传递。传递数组的时候,可以直接传递数组名称,也可以传递指定下标的元素。

// 传递数组的示例

public class Test {

   public static void main(String args[]) {

      int[] arr = {1, 2, 3};

      changeArray(arr);

      System.out.println("arr[0] = " + arr[0] + ", arr[1] = " + arr[1] + ", arr[2] = " + arr[2]);

   }

   public static void changeArray(int[] a) {

      for (int i = 0; i < a.length; i++) {

         a[i]++;

      }

   }

}

运行结果为:arr[0] = 2, arr[1] = 3, arr[2] = 4。这是因为changeArray函数对数组每个元素进行了加一操作。

4. 传递对象

Java中的类也是对象,同样可以通过传递类的引用来传递对象。对象传递和数组传递类似,可以直接传递对象,也可以传递对象的某个属性。

// 传递对象的示例

public class Test {

   public static void main(String args[]) {

      Student s = new Student("Alex", 20);

      changeStudent(s);

      System.out.println("Student name is " + s.getName() + ", age is " + s.getAge());

   }

   public static void changeStudent(Student s) {

      s.setName("Alice");

      s.setAge(21);

   }

}

class Student {

    private String name;

    private int age;

    public Student(String name, int age) {

        this.name = name;

        this.age = age;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

}

运行结果为:Student name is Alice, age is 21。这是因为changeStudent函数对s的属性进行了修改。

总结

本篇文章介绍了Java函数传参的几种方式,包括值传递、引用传递、传递数组和传递对象等。初学者在编写Java程序时需要熟悉这些传参方式的特点,选择合适的方式传递参数,才能更好地处理程序中的数据。