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

Java函数参数:了解参数类型和传递方式

发布时间:2023-06-10 07:31:17

在Java中,函数参数是调用函数时传递给函数的值。参数允许我们将数据传递到函数中,以便在函数中进行操作。Java中的参数可以是各种类型,包括基本类型,引用类型和数组类型。本篇文章将介绍Java中的函数参数类型和传递方式。

1. 参数类型

在Java中,函数参数可以被分为三种类型:基本类型、引用类型和数组类型。

1.1 基本类型参数

Java的基本数据类型有byte、short、int、long、float、double、char、boolean八种。基本数据类型的参数在函数调用时会将数值自动复制给函数中的参数,即采用值传递的方式传递参数。这意味着,在函数内部对参数的修改不会影响原始值。

例如:

public class Test{
    public static void main(String[] args){
         int i = 10;
         addOne(i);
         System.out.println(i); // 输出结果为10
    }
    
    public static void addOne(int i){
         i++;
    }
}

上面的程序输出结果为10,因为在addOne()函数中对i的修改不会影响main()函数中的i值。

1.2 引用类型参数

引用类型参数是指非基本类型参数,例如类、接口或数组。在Java中,引用类型的参数传递也是采用值传递,但传递的值是引用的副本。这意味着,虽然函数中可以修改对象的属性,但对象本身没有改变。

例如:

public class Student{
    public String name;
    public int age;
}

public class Test{
    public static void main(String[] args){
         Student s = new Student();
         s.name = "Tom";
         s.age = 18;
         setName(s);
         System.out.println(s.name); // 输出结果为Jerry
    }
    
    public static void setName(Student s){
         s.name = "Jerry";
    }
}

上面的程序输出结果为“Jerry”,因为setName()函数中对s对象属性的修改,影响了main()函数中s对象属性的值。

1.3 数组类型参数

数组类型参数是指参数类型为数组的函数参数。数组类型的参数传递与引用类型参数的传递方式类似,也是采用值传递的方式。但是,传递的不是数组本身,而是数组对象的引用。

例如:

public class Test{
    public static void main(String[] args){
         int[] arr = {1, 2, 3};
         changeArray(arr);
         System.out.println(arr[0]); // 输出结果为20
    }
    
    public static void changeArray(int[] arr){
         arr[0] = 20;
    }
}

上面的程序输出结果为“20”,因为changeArray()函数中对数组元素的修改,影响了main()函数中数组元素的值。

2. 参数传递方式:

在Java中,参数传递方式有值传递和引用传递两种方式。

2.1 值传递

值传递是指在函数调用中,将变量的值复制到新的变量中,并将该新变量传递给函数。Java中的基本类型和字符串类型使用值传递的方式进行参数传递,也就是说,在函数中对参数进行修改不会影响原始值。

例如:

public class Test{
    public static void main(String[] args){
         int i = 10;
         addOne(i);
         System.out.println(i); // 输出结果为10
    }
    
    public static void addOne(int i){
         i++;
    }
}

2.2 引用传递

引用传递是指在函数调用中,将变量的引用复制到新的变量中,并将该新变量传递给函数。Java中的对象类型和数组类型使用引用传递的方式进行参数传递,这意味着在函数中对参数进行修改会影响引用的原始值。

例如:

public class Student{
    public String name;
    public int age;
}

public class Test{
    public static void main(String[] args){
         Student s = new Student();
         s.name = "Tom";
         s.age = 18;
         setName(s);
         System.out.println(s.name); // 输出结果为Jerry
    }
    
    public static void setName(Student s){
         s.name = "Jerry";
    }
}

引用传递与值传递的区别主要是在修改参数值时的影响范围。值传递只修改了传递参数的函数内部副本的值,而引用传递会修改原值。

总结:

函数参数是调用函数时传递给函数的值。Java中的函数参数可以是基本类型、引用类型和数组类型。参数传递方式有值传递和引用传递两种方式。在值传递中,函数调用时将变量的值复制到新的变量中,并将该新变量传递给函数。在引用传递中,函数调用时将变量的引用复制到新的变量中,并将该新变量传递给函数。