Java方法(函数)

article/2025/8/23 7:13:48

文章目录

  • Java方法(函数)
    • 一、方法介绍
    • 二、方法的定义和调用格式
      • 1. 快速入门
      • 2. Debug查看方法的执行流程
      • 3. 方法调用内存图解
      • 4. 带参数方法的定义和调用
        • 1)定义和调用格式
        • 2)形参和实参
      • 5. 带返回值方法的定义和调用
      • 6. 方法通用定义格式
    • 三、方法常见问题
    • 四、方法重载
      • 1. 方法重载关系的要求
      • 2. 方法重载的好处

Java方法(函数)

一、方法介绍

方法(method)一段具有独立功能的代码块,不调用就不执行

方法的出现:

  • 可以将挤在一起的臃肿代码,按照功能进行分类管理
  • 方法的出现,可以提高代码的复用性

二、方法的定义和调用格式

1. 快速入门

定义格式:

public static void 方法名() {  // 方法体
}
//举例
public static void show() {  // 方法体
}

调用格式:

方法名(); 
show();  

我们先通过代码来了解一下方法的使用:

package cn.edu.hgu.method;public class MethodDemo1 {/*方法(函数)介绍:一段具有独立功能的代码块,不调用就不执行。好处:- 可以将挤在一起的臃肿代码,按照功能进行分类管理,提高代码的可阅读性- 方法的出现,可以提高代码的复用性定义格式:public static void 方法名() {// 方法体}方法的调用格式:方法名();注意事项:1.方法与方法之间是平级关系,不允许嵌套定义2.方法不调用就不执行3.方法的定义顺序,和执行顺序无关,要想梳理执行顺序,就看调用顺序*/public static void main(String[] args) {farmer();cook();me();}public static void farmer() {System.out.println("除草");System.out.println("耕地");System.out.println("播种");System.out.println("浇水");System.out.println("收割");}public static void cook() {System.out.println("买菜");System.out.println("洗菜");System.out.println("做菜");}public static void me() {System.out.println("点菜");System.out.println("吃菜");}
}

输出结果为:

image-20230117103608537

注意事项:

  1. 方法与方法之间是平级关系,不允许嵌套定义
  2. 方法不调用就不执行
  3. 方法的定义顺序,和执行顺序无关,要想梳理执行顺序,就看调用顺序

我们初步了解了方法的定义、调用以及相关的注意事项,下面我们通过一个案例来巩固一下所学内容:

需求:定义一个方法,方法中定义两个整数变量, 求出最大值并打印在控制台

分析:

  • 根据格式编写方法,方法名自己给出 (见名知意 小驼峰命名法)
  • 方法内部定义出两个 int 类型变量
  • 使用三元运算符求出最大值
  • 调用该方法,让内部的逻辑执行起来

代码如下:

package cn.edu.hgu.test;public class MethodTest {public static void main(String[] args) {getMax();}/*需求:定义一个方法,方法中定义两个整数变量,  求出最大值并打印在控制台*/public static void getMax() {int num1 = 10;int num2 = 20;int max = num1 > num2 ? num1 : num2;System.out.println(max);}
}

输出结果为:20

2. Debug查看方法的执行流程

以刚才的 MethodTest 方法为例,我们稍加修改来使用 Debug 查看方法的执行流程:

使用Debug运行代码:

image-20230117132503370

点击 Step into 进入方法:

image-20230117132937955

点击 Step Over 执行语句:

image-20230117133118639

点击 Step Out 跳出当前方法:

image-20230117133224091

3. 方法调用内存图解

  • 方法没有被调用的时候,在方法区中的字节码文件中存放
  • 方法被调用的时候,需要进入到栈内存中运行

image-20230117133659692

我们通过下图来了解方法调用内存的步骤:
在这里插入图片描述

通过这张图,我们对方法调用内存已经有了一定的了解。

下面,我们来看一个实例:

package cn.edu.hgu.method;public class MethodDemo2 {public static void main(String[] args) {study();}public static void sleep() {System.out.println("睡觉");}public static void eat() {System.out.println("吃饭");}public static void study() {eat();System.out.println("学习");sleep();}
}

输出结果为:

image-20230117144414287

4. 带参数方法的定义和调用

在前面我们在使用方法的时候,使用的固定的数,这样显然不太灵活。。。

image-20230117153429901

下面我们对代码做一下修改,改为带参数的方法:

package cn.edu.hgu.test;public class MethodTest {public static void main(String[] args) {getMax(30, 72);}public static void getMax(int num1, int num2) {int max = num1 > num2 ? num1 : num2;System.out.println(max);}
}

输出结果为:72

这样,我们调用方法的时候,只需要在调用的时候修改里面的参数就可以了。

1)定义和调用格式

定义格式:

public static void 方法名 (数据类型 变量名) {  // 方法体
}public static void 方法名(数据类型 变量名1,数据类型 变量名2... ) {  // 方法体
}
//举例
public static void call (String name) {  ...
}
public static void add (int a, int b) {  ...
}

调用格式:

方法名(参数);
方法名(参数1, 参数2);
//举例
call("钢门吹雪");
add(10,20);

2)形参和实参

形参:全称形式参数,是指在定义方法时,所声明的参数

实参:全称实际参数,调用方法时,所传入的参数

image-20230117154700957

5. 带返回值方法的定义和调用

为什么要有带返回值的方法?

我们经常会根据一个方法产出的结果,来去组织另外一段代码逻辑,为了拿到这个方法产生的结果,就需要定义带有返回值的方法

定义格式:

public static 数据类型 方法名 (数据类型 变量名1,数据类型 变量名2... ) {  return 数据值;
}
//举例
public static int add (int a, int b) { int c = a + b; return c;
}
public static double getNum () {  return 12.3;
}

调用格式:

数据类型 变量名 = 方法名(参数...);
//举例
int result = add(10,20);

6. 方法通用定义格式

public static 返回值类型 方法名( 参数 ) {方法体; return 数据 ;
}
  • 定义方法时,要做到两个明确明确参数:
    • 主要是明确参数的类型和数量
    • 明确返回值类型:主要是明确方法操作完毕之后是否有结果数据,如果有,写对应的数据类型,如果没有,写void
  • 调用方法时
    • void类型的方法,直接调用即可
    • 非void类型的方法,推荐用变量接收调用

三、方法常见问题

  • 方法不调用就不执行
  • 方法与方法之间是平级关系,不能嵌套定义
  • 方法的编写顺序和执行顺序无关
  • 方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写,如果要编写return,后面不能跟具体的数据。
  • return语句下面,不能编写代码,因为永远执行不到,属于无效的代码

四、方法重载

需求:提供 4 个计算方法,方法功能如下

  1. 计算两个整数相加的和
  2. 计算两个小数相加的和
  3. 计算三个整数相加的和
  4. 计算三个小数相加的和
public class Test {public static int add1(int a, int b) {return a + b;}public static double add2(double a, double b) {return a + b;}public static int add3(int a, int b, int c) {return a + b + c;}public static double add4(double a, double b, double c) {return a + b + c;}
}

如果我们按照上面这样写,需要我们定义四个不同的方法,但实际上这四个方法都是对参数进行求和操作:

image-20230117165546959

那么,我们是否可以只使用一个方法名,通过不同参数,从而实现不同的功能:

image-20230117165841844

1. 方法重载关系的要求

在同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系

简单记:同一个类中,方法名相同,参数不同的方法

​ 参数不同:个数不同、类型不同、顺序不同

注意:识别方法之间是否是重载关系,只看方法名和参数,跟返回值无关。

image-20230117170022240

我们再来看一个例子:

image-20230117170052207

这个例子中的两个方法虽然参数不同,但实际上它们的参数都是一个整数和一个小数,虽然也符合重载的定义,但实际上并没有什么实际意义。

2. 方法重载的好处

不用记忆过多繁琐的方法名字

image-20230117170324808

就以我们经常使用的打印语句为例,它可以输出整数、小数、字符串、布尔类型等数据。


http://chatgpt.dhexx.cn/article/4etMfarM.shtml

相关文章

java中的函数(概述)

java中的函数是比较重要的一个知识点。那么函数到底是什么呢,我们可以通过几点来进行学习,第一个是定义,第二个是特点,第三个是应用,第四个是重载。其中最重要的当然是函数的应用。定义和特点是为了入门所应用的&#…

JAVA函数(方法)

函数的概念: 函数是定义在类中的一段独立的代码块,用来实现某个功能。Java中,函数又被称为方法。 函数的主要作用是为了提高代码的复用性。 函数都是在栈内存中运行;运行的函数处在栈顶。 函数格式:修饰符 返回…

java函数

函数(function): 函数是什么? 函数就是具有名称的特定功能代码的集合。 为什么使用函数: 提高代码的复用度 Java中如何定义函数 访问修饰符 [static] 返回值的类型 函数名称([形式参数列表]) { // 函数体 由一行或者…

函数总结:

–函数是什么: 函数是封装了具备特定功能的一段代码块,具备特定功能的代码集合。 –为什么使用函数: 解决重复性代码问题,提高代码的复用度。–函数基本格式: 访问修饰符 [static] 返回值的类型 函数名称([形式参…

java 基础——函数(方法)

函数基本定义、语法 首先我们先要了解什么是函数? 函数的定义:在类中,有特定功能的一段独立代码块 说人话:简单来说就是,在一个类(一个 .java 文件)里面,一段有自己存在的意义&am…

云上见!操作系统开源社区重磅发布!

凌云时刻 极鲜速递 导读:2020 云栖大会「系统软件开源及生态专场」聚焦云时代系统软件技术的发展及开源生态面临的机遇和挑战,并将进行操作系统开源社区的重磅发布。 作者 | 阿里云操作系统来源 | 云巅论剑 2020 云栖大会将在 9 月 17 日 — 9 月 18 日…

万字干货:阿里巴巴是怎么做大数据算法应用测试的? | 凌云时刻

凌云时刻 洞见 导读:随着最近几年数据计算力与机器智能算法的兴起,大数据应用在各个行业也不断涌现。测试技术作为工程技术的一部分,也在同步演进。在 DT 时代,如何测试和保障一个基于大数据的应用的软件质量,成为测试…

在中国在行其道的智慧城市,为何折戟多伦多? | 凌云时刻

凌云时刻 洞见 导读:谷歌的母公司Alphabet于2017年开始,致力于将多伦多的Quayside社区改造成未来主义社区,承诺投入超过5000万美元用于使用技术减少交通拥放和垃圾填埋场。但是由于数据隐私问题,该计划迅速引发了争议&#xff0c…

应云而生,原力觉醒——解读云原生基础设施 | 凌云时刻

凌云时刻 极鲜速递 导读:云原生是云计算领域的热点之一。就像 “一千个人眼里有一千个哈姆雷特”,大家对"云原生"的定义也见仁见智。本文将介绍云原生应用架构和生命周期管理的进化方向。 作者 | 易立 来源 | 凌云时刻(微信号&…

从架构到代码:软件开发的七个新趋势 | 凌云时刻

凌云时刻 洞见 导读:本文根据阿里云原生团队资深技术专家陈立兵 (花名:雷卷)的直播整理而成,从领域驱动设计(DDD)、Reactive、Service Mesh和代码智能等几个方面展开,聊一聊他眼里的软件开发的发展趋势。 …

桌面版IDE将迎终结,Github发布代码空间Codespaces | 凌云时刻

凌云时刻 洞见 导读:2020年了,你拿啥写码呢? 作者 | 马超 来源 | 凌云时刻(微信号:linuxpk) Satellite 2020 5月7日,受疫情的影响,全球最大的开源社区GitHub也采用了线上的方式举办…

开源界也要封闭,OpenSource能否继续无国界 | 凌云时刻

凌云时刻 洞见 导读:开源已经站在了必须做转型的十字路口,问题是后面应该怎么走? 作者 | 马超 来源 | 凌云时刻(微信号:linuxpk) 写在前面 日前知名的云服务提供商HashiCorp在官网宣布:不允许中…

谁来帮帮只想救人的医生呢? | 凌云时刻

撰文| 哪嗒 编辑| 猛哥 图源| 网络及受访者 1 死人实在太多了。一个月内,贝加莫报纸刊登讣告的版面从 1 页半增加到 10 页。 贝加莫是意大利北部小城,距离米兰不到 50 公里,12 万人,却有8000 多人感染,其中四分之三的患…

三年磨一剑,钉的真好听 | 凌云时刻

“被选中,我也没办法”?事情没这么简单 作者|小沐 编辑|火柴Q 疫情期间,停课不停学,全国近3亿师生进行了一场在线教学大迁移。 相比2003年SARS爆发时,学生只能在家自学或看电视转播学习,如今“空中课堂”已…

​云原生:重新定义云时代的技术标准 | 凌云时刻

凌云时刻 洞见 导读:云计算、大数据、人工智能等新技术正迅速的改变着我们所处的时代,其巨大的影响力已经从量变到质变,数字化转型成为企业发展的必然选择。 作者 | 叔同 来源 | 凌云时刻(微信号:linuxpk)…

2020 有哪些不容错过的前端技术趋势? | 凌云时刻

凌云时刻 洞见 导读:2019 年的大前端热闹非凡,Serverless,Flutter,Vue3.0,桌面应用开发,小程序,WebAssembly 的火爆发展还是超乎我们预期,2020 的大前端又有哪些不容错过的技术趋势…

eBPF技术应用云原生网络实践:kubernetes网络 | 凌云时刻

凌云时刻 洞见 导读:eBPF起源于 Linux 网络子系统,由于其灵活性和高性能等特点,被迅速应用在不同领域。事实上网络领域中,eBPF由于其高性能支持更高的吞吐率、平均每GB带宽消耗更少的CPU等特性,已经逐渐成为网络领域中…

OpenAnolis社区致Linux开发者的一封信

凌云时刻 技术 导读:OpenAnolis社区官宣。 来源|OpenAnolis 亲爱的Linux开发者朋友们: 大家新年好! 今天,我们要给大家讲讲OpenAnolis的故事,她与每个Linux开发者都息息相关。OpenAnolis社区由阿里云于202…

云原生时代,消息中间件的演进路线 | 凌云时刻

凌云时刻 技术 导读:从虚拟化技术诞生以来,IaaS/PaaS/SaaS 概念陆续被提了出来,各种容器技术层出不穷。到 2015 年, Cloud Native 概念应运而生,一时间,各种云厂商,云服务以及云应用都加上了“…

Alibaba Cloud Linux 2 LTS OS 启动优化实践 | 凌云时刻

凌云时刻 技术 导读:Alibaba Cloud Linux 2 (原Aliyun Linux 2)是阿里云操作系统团队基于社区版 4.19 LTS 内核打造的一款针对云产品优化的下一代 Linux 操作系统发行版,不仅提供 Linux 社区的最新增强功能,也提供了云上最佳用户体验并针对阿…