Java形参实参详解

在Java编程中,形参和实参是两个非常重要的概念。形参是方法定义中的参数,而实参是方法调用时传递给方法的值。了解和正确使用形参和实参对于编写高质量的Java程序至关重要。本文将详细介绍Java形参和实参的概念,并提供相应的代码示例。

形参和实参的定义

形参是方法定义中的参数。在方法定义中,我们可以为方法指定一个或多个形参,并且每个形参都有一个类型和一个名称。形参的主要作用是接收方法调用时传递的实参,并在方法体中使用这些值。

实参是方法调用时传递给方法的值。在方法调用中,我们可以为方法传递一个或多个实参,这些实参必须与方法定义中的形参类型和顺序相匹配。

下面是一个简单的Java方法定义的示例,其中包含两个形参:

public void calculateSum(int a, int b) {
    int sum = a + b;
    System.out.println("The sum is: " + sum);
}

在上面的示例中,calculateSum方法有两个形参,它们的类型都是int。在方法体中,我们将形参ab相加,然后打印输出结果。

下面是一个调用上述方法的示例,其中传递了两个实参:

calculateSum(5, 3);

在上面的示例中,我们调用了calculateSum方法,并传递了两个实参53。这两个实参将分别赋值给方法定义中的形参ab,并执行方法体中的操作。

传值调用

在Java中,实参是通过传值调用方式传递给方法的。这意味着在方法调用时,实参的值被赋值给对应的形参。对于基本类型的实参,传递的是其值本身;对于对象类型的实参,传递的是对象的引用值。

下面是一个示例,说明了传值调用的概念:

public void changeValue(int value) {
    value = 10;
    System.out.println("The value inside the method is: " + value);
}

public static void main(String[] args) {
    int num = 5;
    System.out.println("The value before method call is: " + num);
    changeValue(num);
    System.out.println("The value after method call is: " + num);
}

在上面的示例中,我们定义了一个changeValue方法,它接收一个形参value。在方法体中,我们将value的值更改为10,然后打印输出结果。

main方法中,我们声明了一个变量num并初始化为5。然后我们调用changeValue方法,并将num作为实参传递给它。在方法调用过程中,num的值被赋值给value,并在方法体中被更改为10。然而,在方法调用完成后,num的值仍然是5,因为实参的值只是被传递给了形参,而没有改变实参本身的值。

引用类型的实参

对于引用类型的实参,传递的是对象的引用值。这意味着在方法中对对象的更改将反映在方法调用者中。

下面是一个示例,说明了引用类型实参的行为:

public void changeName(Student student) {
    student.setName("John");
    System.out.println("The name inside the method is: " + student.getName());
}

public static void main(String[] args) {
    Student student = new Student("Alice");
    System.out.println("The name before method call is: " + student.getName());
    changeName(student);
    System.out.println("The name after method call is: " + student.getName());
}

在上面的示例中,我们定义了一个changeName方法,它接收一个形参student,该形参的类型是一个自定义的Student类。在方法体中,我们将student的名字更改为`"John