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

Java函数的参数传递方式与传递规则

发布时间:2023-06-26 10:34:20

Java的函数参数传递方式以及传递规则是Java程序设计的基础知识点。在Java中,函数参数可以分为基本数据类型和引用数据类型两种,不同的数据类型传递方式略有不同。本文将结合具体例子,详细介绍Java函数参数的传递方式与传递规则。

一、基本数据类型的传递

基本数据类型包括:byte、short、int、long、float、double、char、boolean。在Java中,基本数据类型的传递方式是值传递,即函数传递的是变量的值而不是变量本身。

下面是一个例子:

public class Test {
    public static void main(String[] args) {
       int a = 1;
       int b = 2;
       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 = 1, b = 2

从结果来看,虽然在swap函数中交换了a和b的值,但是在main函数中输出的a和b的值并没有发生改变。这是因为在Java中,函数传递的是变量的值,swap函数中交换的是a和b的值,但只是交换了形参的值,而实参的值仍然没有改变。因此,在main函数中输出的a和b的值依然是原来的值。

二、引用数据类型的传递

引用类型变量保存的是对象的引用地址,而不是对象本身。因此,对引用类型变量进行传递时,只传递了引用地址而不是对象本身。在函数内部改变引用类型变量的属性,实际上是改变了该对象的属性。

下面是一个例子:

public class Test {
    public static void main(String[] args) {
       Student s = new Student(); // 创建一个学生对象
       s.name = "Tom"; // 给学生对象的属性赋值
       change(s);
       System.out.println("学生的名字是:" + s.name);
    }
   
    public static void change(Student s) {
       s.name = "Jerry";
    }
}
 
class Student {
    String name;
}

输出结果为: 学生的名字是:Jerry

从程序输出结果来看,最终输出结果为“Jerry”,原因是在change函数中修改了s的属性,即修改了学生对象的名字。从传递的角度来看,change函数中传递的是引用类型变量s的地址,而不是Student对象本身。也就是说,在函数change中对该对象的修改,引用类型变量s和main函数中的变量s指向的都是同一个Student对象,因此在输出时,显示的是在change函数中对学生对象的修改。

三、Java函数参数传递规则

Java函数参数传递的规则主要有以下几点:

1. 基本数据类型是按值传递,即传递的是变量的值。

2. 引用数据类型是按传引用传递,即传递的是变量的地址。

3. 在Java中,所有方法的参数都是值传递。

4. 实参的值传递到形参中,形参就是实参的一个副本,对形参的任何修改都不会影响到实参。

在Java中,由于函数参数是按值传递的,所以函数的返回值只能影响函数外部的变量,不能影响到函数的内部变量。因此,在函数内部进行操作后,需要将结果返回给调用函数。

总结:

本文介绍了基本数据类型与引用数据类型在Java中的传递方式及Java函数参数传递的规则。在Java中,所有方法的参数都是值传递,而在引用数据类型的传递中,传递的是变量的地址。了解这些知识点,可以更好的掌握Java程序设计。