【08】 Java方法的定义 方法调用 什么是值传递和引用传递

【08】 Java方法的定义 方法调用 什么是值传递和引用传递

📔 千寻简笔记介绍

千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点一个Star

更新:支持在线阅读文章,根据发布日期分类。

简介

本文关键词

方法的定义形参实参方法调用值传递引用传递

1 方法的定义

在Java中,方法的定义是指在类中声明和实现一个方法,以使其执行特定的功能。方法定义由以下几个部分组成:

  1. 访问修饰符:方法可以使用不同的访问修饰符来指定方法的可见性,如 publicprivateprotected 或者默认的无修饰符。
  2. 返回类型:方法可以有一个返回类型,用于指定方法返回的结果的数据类型。如果方法不返回任何值,则使用关键字 void 来表示。
  3. 方法名:方法名是唯一的标识符,用于调用该方法。方法名应符合命名规范,具有描述性,并遵循驼峰命名法。
  4. 参数列表:方法可以接受零个或多个参数作为输入。参数列表包括参数的数据类型和参数名,多个参数之间用逗号分隔。
  5. 方法体:方法体是由一组语句构成的代码块,用于实现方法的功能。方法体内的语句将按照定义的顺序执行。

下面是一个简单方法定义的示例:

public int calculateSum(int a, int b) {
    int sum = a + b;
    return sum;
}

在上述示例中,方法的定义包括:

  • 访问修饰符:public
  • 返回类型:int(返回一个整数)
  • 方法名:calculateSum
  • 参数列表:(int a, int b)
  • 方法体:计算变量 ab 的和,并将结果返回。

通过这样的方法定义,我们可以在其他地方调用这个方法,并使用传递的参数进行计算。例如:int result = calculateSum(3, 5); 将返回 8

1.1参数类型

Java中,参数可以分为两种类型:形式参数和实际参数。

形式参数(形参)

形式参数是在方法定义时声明的参数,用于接收外界传入的数据。它们充当方法内部的占位符,用来定义方法的行为。形参的数据类型和名字在方法定义时被指定。

下面是一个示例方法定义,其中 ab 是形式参数:

public int calculateSum(int a, int b) {
    // 方法体
}
实际参数(实参)

实际参数是在方法调用时传递给方法的具体数值或变量。它们是真正用于执行方法的数据。

下面是使用上述方法定义进行方法调用的示例,其中 35 是实际参数:

int result = calculateSum(3, 5);

在此示例中,35 被传递给 calculateSum 方法作为实际参数。在方法执行过程中,参数 a 的值将为 3,参数 b 的值将为 5

总结一下,形式参数是方法定义中声明的参数,用于定义方法的行为;而实际参数是在方法调用时传递给方法的具体数值或变量,作为形式参数的实际值。

2 方法调用

在Java中,要调用一个方法,需要按照以下格式:

调用方法:对象名.方法名(实参列表)

方法名(参数列表);

其中,方法名 是指要调用的方法的名称,参数列表 是指传递给方法的实际参数。

下面是一个示例,演示如何调用一个带有参数的方法:

public class MethodExample {
    public static void main(String[] args) {
        int a = 3;
        int b = 5;
        
        int result = calculateSum(a, b);
        System.out.println("Sum: " + result);	// 输出结果将是:Sum: 8
    }
    
    public static int calculateSum(int num1, int num2) {
        int sum = num1 + num2;
        return sum;
    }
}

在上述示例中,我们定义了一个名为 calculateSum 的方法,用于计算两个整数的和。然后,在 main 方法中,我们定义了两个变量 ab,并将它们作为实际参数传递给 calculateSum 方法。调用完成后,返回的结果被存储在 result 变量中,并通过 System.out.println 输出到控制台。

通过这样的方法调用,我们可以使用方法来执行特定的功能,并获取返回的结果或效果。在调用方法时,确保传递给方法的实际参数与方法定义的形式参数的数量和类型匹配。

练习:比大小
	public static void main(String[] args){
        int max = max(10,20);
        System.out.println(max);
    } 

	public static int max(int num1,int num2){
        if(num1 > num2){
            return num1;
        }else if(num1 < num2){
            return num2;
        }else{
            System.out.println("相等");
        }
        return 0;
    }

3 扩展:什么是值传递和引用传递

值传递(Pass-by-Value)和引用传递(Pass-by-Reference)是在方法调用时传递参数的两种不同方式。

  1. 值传递(Pass-by-Value): 值传递是指将实际参数的值复制给形式参数,方法中对形式参数的修改不会影响到实际参数。在值传递中,对形式参数的改变不会影响到实际参数本身。
  2. 引用传递(Pass-by-Reference): 引用传递是指将实际参数的引用(内存地址)传递给形式参数,方法中对形式参数的修改会影响到实际参数。在引用传递中,对形式参数的改变会影响到实际参数本身。

在Java中,所有的基本类型(如 int、float、boolean 等)都是通过值传递进行参数传递的。这意味着当你将一个基本类型的变量作为参数传递给方法时,实际参数的值会被复制到形式参数中,在方法中对形式参数的修改不会影响到原始的实际参数。

而对于对象类型(如数组、类实例等),Java采用的是引用传递的方式。当你将一个对象作为参数传递给方法时,实际参数的引用(内存地址)会被传递给形式参数,方法中对形式参数的修改会影响到原始的实际参数。

下面是一个示例,演示值传递和引用传递的区别:

public class PassByValueExample {
    public static void main(String[] args) {
        int num = 10;
        System.out.println("Before method call: " + num);
        changeValue(num);
        System.out.println("After method call: " + num);
        
        int[] arr = {1, 2, 3};
        System.out.println("Before method call: " + Arrays.toString(arr));
        changeArrayValue(arr);
        System.out.println("After method call: " + Arrays.toString(arr));
    }
    
    public static void changeValue(int num) {
        num = 20;
    }
    
    public static void changeArrayValue(int[] arr) {
        arr[0] = 100;
    }
}

输出结果将是:

Copy CodeBefore method call: 10
After method call: 10

Before method call: [1, 2, 3]
After method call: [100, 2, 3]

在这个示例中,我们定义了两个方法,changeValuechangeArrayValuechangeValue 方法接收一个整数参数,并将参数值修改为 20,但并不影响到 num 原始变量的值。而 changeArrayValue 方法接收一个整数数组参数,并将数组的第一个元素修改为 100,这次改变会影响到 arr 原始数组的值。

这就是值传递和引用传递的区别。对于基本类型,传递的是值的副本,对形式参数的修改不会影响到实际参数。而对于对象类型,传递的是引用,对形式参数的修改会影响到实际参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千寻简

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值