Java基础武器--方法

本文详细介绍了Java中的方法概念,包括方法的定义、基本使用、参数传递(基本类型和引用类型的区别)、方法重载以及注意事项。重点讲解了如何定义方法、调用方法的不同形式以及参数如何在调用中传递。
摘要由CSDN通过智能技术生成


方法概述

什么是方法

方法(method)完成某一个特定功能的代码块

方法基本使用

  • 抽取代码

    public static void fire() {
        System.out.println("准备发射5发炮弹");
        System.out.println("发射第1发炮弹* * * *");
        System.out.println("发射第2发炮弹* * * *");
        System.out.println("发射第3发炮弹* * * *");
        System.out.println("发射第4发炮弹* * * *");
        System.out.println("发射第5发炮弹* * * *");
        System.out.println("发射5发炮弹结束");
    }
    
  • 在main方法中调用

    public static void main(String[] args) {
        System.out.println("游戏开始...");
        System.out.println("看到了一个怪物...血牙野猪...");
        //调用方法,发射炮弹
        fire();
        System.out.println("...血牙野猪被打倒...");
    }
    
  • 调用格式

方法名(参数列表);

  • 注意
    • 方法必须先创建才可以使用,该过程称为方法定义
    • 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

方法调用过程图解

在这里插入图片描述

定义方法格式

修饰符 返回值类型 方法名(参数列表) {
	// 代码块...
	return 结果;
}
  • 修饰符: public static等
  • 返回值类型:表示方法运行结果的数据类型,方法执行后将结果返回到调用者
  • 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
  • **return:将方法执行后的结果带给调用者,方法执行到return,整体方法运行结束

小贴士:return 结束; 这里的结束在开发中,我们正确的叫法成为方法的返回值

定义方法的两个明确

  • 明确参数列表

    该方法在完成一个功能时,需要的参数有几个,参数的类型是什么,需要在我们明确给出的。

  • 明确返回值类型

    方法的功能完成之后,是否有结果返回,如果有,使用return 将结果返回给调用者。没有返回值void

方法小结

定义方法注意事项

  • 定义位置:类中方法外,不能嵌套定义
  • 方法必须先定义,再使用
  • void表示无返回值,不需要书写return
  • 不能在return后面写代码,return意味着方法结束,所有后面的代码记永远都不会执行,属于无效代码
  • 定义方法时()中的参数,我们称之为:形式参数,在调用该方法时传递的参数,我们称之为:实际参数
  • 你可以不接收返回的值,但你必须给出参数

调用方法三种形式

  • 直接调用:直接写方法名调用
  • 赋值调用:调用方法,在方法前面定义变量,接受方法返回值
  • 输出语句调用:在输出语句中调用方法
    • 注意事项:不能用输出语句调用void无返回值类型的方法。因为方法执行后没有结果,也就打印不出任何内容

方法重载

方法重载概述

在同一个类中,具有相同的方法名, 参数列表不同(参数的个数及类型不同及顺序不同),与返回值无关
参数列表:个数不同,数据类型不同,顺序不同。
重载方法调用:JVM通过方法的参数列表,调用不同的方法。

  • 注意事项

    重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
    重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载

方法的参数传递

方法参数传递基本类型

public class ArgsDemo02 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 30};
        System.out.println("调用change方法前:" + arr[1]);//20
        
        change(arr);
        System.out.println("调用change方法后:" + arr[1]);//200
    }

    public static void change(int[] arr) {
        arr[1] = 200;
    }
}
  • 结论

    基本数据类型的参数,形式参数的改变,不影响实际参数

  • 结论依据

    每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失

在这里插入图片描述

方法参数传递引用类型

public class ArgsDemo02 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 30};
        System.out.println("调用change方法前:" + arr[1]);//20
        
        change(arr);
        System.out.println("调用change方法后:" + arr[1]);//200
    }

    public static void change(int[] arr) {
        arr[1] = 200;
    }
}
  • 结论

    对于引用类型的参数,形式参数的改变,影响实际参数的值

  • 结论依据

    引用数据类型的传参,传入的是地址值,内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BoatsZhou

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值