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

Java函数的传参方式与参数类型

发布时间:2023-06-22 04:24:17

Java函数的传参方式与参数类型

Java函数是一段独立的代码块,它可以完成特定的任务,函数的调用者可以通过传递参数来告诉函数如何完成任务。Java函数的传参方式与参数类型对于Java程序员来说是非常重要的,它涉及到如何使用和调用函数。在本文中将详细介绍Java函数的传参方式与参数类型。

Java函数的传参方式

Java函数的传参方式有两种:按值传递和按引用传递。

按值传递:按值传递指的是函数传递的是值的副本,也就是说函数内部对参数的修改不会影响到函数外部的变量。在Java中,所有的基本类型和基本类型的封装类都是按值传递的。例如:int、float、double、Boolean等等,它们都是按值传递的。下面是一个按值传递的例子:

public class Test {
    public static void main(String[] args) {
        int a = 1;
        System.out.println("Before change, a = " + a);  // 输出: Before change, a = 1
        changeValue(a);
        System.out.println("After change, a = " + a);   // 输出: After change, a = 1
    }

    public static void changeValue(int b) {
        b = 2;
    }
}

在上面的例子中,我们定义了一个名为changeValue的函数,它接受一个整型参数b,并把b赋值为2。在main函数中,我们定义了一个整型变量a,把它赋值为1,并调用changeValue函数,把a作为参数传递给changeValue函数。在changeValue函数中,我们把b的值赋值为2,但是在main函数中,a的值并没有改变。

按引用传递:按引用传递指将变量的地址传递到函数中,函数内部对参数的修改会影响到函数外部的变量。在Java中,除了基本类型和基本类型的封装类,其他所有的数据类型都是按引用传递的,例如:数组、对象等等。下面是一个按引用传递的例子:

public class Test {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        System.out.println("Before change, a[0] = " + a[0]);    // 输出: Before change, a[0] = 1
        changeValue(a);
        System.out.println("After change, a[0] = " + a[0]);     // 输出: After change, a[0] = 10
    }

    public static void changeValue(int[] b) {
        b[0] = 10;
    }
}

在上面的例子中,我们定义了一个名为changeValue的函数,它接受一个整型数组参数b,并把b的 个元素的值赋值为10。在main函数中,我们定义了一个整型数组a,把它赋值为{1,2,3},并调用changeValue函数,把a作为参数传递给changeValue函数。在changeValue函数中,我们把b的 个元素的值赋值为10,main函数中的a的 个元素的值也被修改为了10。

Java函数的参数类型

Java函数的参数类型可以分为两类:基本类型参数和引用类型参数。

基本类型参数:基本类型参数指的是Java中的原生数据类型,例如:int、float、double、Boolean等等,这些参数是按值传递的,函数内部不能改变参数的值。

引用类型参数:引用类型参数指的是除了Java中的基本类型之外的所有数据类型,例如:数组、对象等等,这些参数是按引用传递的,函数内部可以改变参数的值。如果函数内部改变了引用类型参数的引用,也就是把参数指向了一个新的对象,那么函数外部的引用类型参数不会发生改变。例如:

public class Test {
    public static void main(String[] args) {
        Student s = new Student("Tom", 18);
        System.out.println("Before change, s name is " + s.getName());    // Before change, s name is Tom
        changeStudent(s);
        System.out.println("After change, s name is " + s.getName());     // After change, s name is Jerry
    }

    public static void changeStudent(Student s) {
        s.setName("Jerry");
    }
}

在上面的例子中,我们定义了一个名为changeStudent的函数,它接受一个Student类型的参数s。在main函数中,我们定义了一个Student类型的对象s,把它赋值为名字为Tom,年龄为18的学生,并调用changeStudent函数,把s作为参数传递给changeStudent函数。在changeStudent函数中,我们把s的名字改成了Jerry,然后返回到main函数中,输出s的名字,可以看到s的名字已经变成了Jerry。

总结

Java函数的传参方式与参数类型非常重要,按值传递和按引用传递是区分基本类型和引用类型的重要标志。程序员在调用函数时需要明确传参方式和参数类型,避免出现错误。在编写函数时,需要根据实际情况选择采用何种传参方式和参数类型,使函数实现更加灵活和高效。