Java重修第二天—学习”方法“

通过学习本篇文章可以掌握如下知识

1、方法的定义

2、方法在计算机中的执行流程。

3、方法使用时常见问题

4、Java中方法的参数传递机制

5、方法重载


1 方法是什么

方法是一种语法结构,它可以把一段代码实现的某种功能封装起来,以便重复利用。

方法的完整格式定义如下:

修饰符 返回值 方法名(形参列表) { 方法体; return 返回值; }

需求:加入现在有很多成需要需要进行两个整数的求和操作。代码显示:

// 掌握定义方法的完整定义
public class Method_02 {public static void main(String[] args) {int sum = sum(3, 4);System.out.println(sum);}
// !!!注意与上文中方法的完整格式做对比。public static  int sum(int a, int b) {return a+b;}
}

为什么举如此简单的例子,现在在回想一遍我们的场景,其他程序员就可以复用这个求和操作了。重在重复利用。

到现在应该对方法有所了解了吧(*^_^*)。Java中的方法,在CPP或者C中称为函数,其实是一个东西罢了。接下来我们将继续深入学习"方法"。

2 方法的其他形式

方法定义时:需要按照方法解决实际业务需求,需要考虑:

1、方法名是否规范易懂

2、方法是否需要接收参数

3、方法是否需要返回数据

public class Method_02 {public static void main(String[] args) {printHelloWorld();}// 1、无参数无返回值 --- 打印三行helloWorldpublic static void printHelloWorld() {for (int i = 0; i < 3; i++) {System.out.println("helloWorld");}}
}// 2、有参数无返回值// 3、无参数有返回值// 4、有参数有返回值// 由于比较简单,在此就举一个例子,其他的举一反三即可。

3 方法使用时常见问题

  • 方法在类中的位置放在前或者后时无所谓的,但一个方法不能定义在另一个方法里面

  • 方法声明void无返回值时,方法内部不能使用return;

  • return语句下面不能编写代码

  • 由于上述问题比较简单就不再据例子了,如果需要举例在评论区评论即可。

4 案例

求1-n的和

可以将其想象成一个梯形,(上底+下底)*高/2;

这里一般很考验编程和数学能力,只能慢慢积累了。或者可以使用for函数累加也可以的。

注意:要声明好,函数名,入参和返回值。

public class Method_02 {public static void main(String[] args) {int res = sum1_N(100);System.out.println(res);// 5050}public static int sum1_N(int n) {return (1+n)*(n)/2;}
}

判断一个数是否是偶数还是奇数

public class Method_02 {public static void main(String[] args) {boolean res = isOdd(100);System.out.println(res);}public static  boolean isOdd(int n) {return n % 2 != 0;}
}

以上举得例子都比较简单,重点是帮助了解方法的定义和使用,不在于考验编程能力。

5 方法在计算机中执行原理

首先要牢记一点:方法被调用的时候,是进入到栈内存中运行的。

例子如下:一个很简单的求和方法在main方法中被调用。

添加图片注释,不超过 140 字(可选)

【第一步】方法区加载MethodDemo的class文件

添加图片注释,不超过 140 字(可选)

【第二步】将main方法加入到栈内存然后执行main方法中的内容,这里先执行的是第一句代码

添加图片注释,不超过 140 字(可选)

【第三步】发现要调用sum方法,然后栈内存加载sum方法,随后就执行sum方法中的内容

添加图片注释,不超过 140 字(可选)

【第四步】sum中的方法执行完毕之后,sum方法从栈中弹出,将返回值赋值给re变量。

添加图片注释,不超过 140 字(可选)

【第五步】输出re变量值:30,至此全部执行完毕,虽然这个例子很简单,但是麻雀虽小五脏俱全,一个简单的方法调用内部却蕴含了全部的道理,应用到复杂的方法调用,例如递归,完全够用。

6 Java中方法的参数传递机制

public class Method_02 {public static void main(String[] args) {int a = 10;change(a);System.out.println(a);   // 10}private static void change(int a) {System.out.println("BeforeChange:" + a);  // 10a = 20;System.out.println(a);   // 20}
}
6.1 基本类型的参数传递

所谓的值传递:指的是在传输实参给方法的形参时,传输的时实参变量中存储值的副本。

注意这里用的措辞时副本,即修改副本不会影响原参数的数值。

可以按照之前的分析

在change方法执行完毕后,将要从栈内存中弹出,然后再执行 System.out.println(a); 时 返回为10。

6.2 引用类型的参数传递
public class Method_02 {public static void main(String[] args) {int[] arrs = {10,20,30};change(arrs);System.out.println(arrs[1]); // 60}private static void change(int[] a) {System.out.println("BeforeChange:" + a[1]); // 20a[1] = 60;System.out.println(a[1]);  // 60}
}

在执行修改前,堆内存中的值为10,20,30;执行arrs[1] = 222后变为:

因此输入arrs[1] 时候就为222了,注意引用类型和直接类型的区别,可以减少你以后写代码的错误。

7 方法重载

一个类中,出现多个方法的名称相同,但是他们的形参列表时不同的,那么这些方法称为方法重载。

要点:

1、方法名称相同,形参列表不同。

2、形参列表不同指的是,形参个数、类型、顺序不同,不关心形参名称。

public class Method_02 {public static void main(String[] args) {}public static void test(){}public static void test(int a) {}void test(double a) {}void test(double a ,int b){}void test(int a ,double b){}}

如果这篇文章对你有帮助,点个赞吧,有疑问的地方直接评论就可以了。

账号: 兜兜转转 - 知乎 (zhihu.com)

擅长领域:IRS通信仿真、Java和算法等,欢迎讨论哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/230971.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码+视频,手把手教你R语言使用forestploter包绘制单组及双组森林图

森林图在论文中很常见&#xff0c;多用于表示多因素分析中的变量与结果变量的比值效应&#xff0c;可以用图示的方法比较直观的绘制出来。既往我们在文章《R语言快速绘制多因素回归分析森林图&#xff08;1&#xff09;》已经介绍了怎么绘制森林图&#xff0c;但是绘图比较简单…

​电脑技巧:​笔记本电脑电流声的原因和解决方案

目录 一、音频设备接口接触不良 二、笔记本电源问题 三、笔记本电脑驱动程序问题 四、音频硬件问题 五、操作系统内部电磁干扰 六、最后总结 大家在日常生活当中&#xff0c;笔记本电脑已经成为我们工作、学习和娱乐的重要工具。但有时我们在使用过程中可能会遇到一个令人…

git回滚操作,常用场景

文章目录 git回滚操作1.git reset --hard 【版本号】2.回滚后的版本v2又想回到之前的版本v32.1 git reflog 3.git checkout -- 文件名4.git reset HEAD 文件名 git回滚操作 假设我们现在有三个版本 现在回滚一个版本 1.git reset --hard 【版本号】 发现只剩下两个版本了 2.…

git在本地创建dev分支并和远程的dev分支关联起来

文章目录 git在本地创建dev分支并和远程的dev分支关联起来1. 使用git命令2. 使用idea2.1 先删除上面建的本地分支dev2.2 通过idea建dev分支并和远程dev分支关联 3. 查看本地分支和远程分支的关系 git在本地创建dev分支并和远程的dev分支关联起来 1. 使用git命令 git checkout…

Spring Boot 3 集成 Thymeleaf

在现代的Web开发中&#xff0c;构建灵活、动态的用户界面是至关重要的。Spring Boot和Thymeleaf的结合为开发者提供了一种简单而强大的方式来创建动态的Web应用。本文将介绍如何在Spring Boot项目中集成Thymeleaf&#xff0c;并展示一些基本的使用方法。 什么是Thymeleaf&#…

2.HDFS 架构

目录 概述架构HDFS副本HDFS数据写入流程NN 工作原理DN 工作原理 结束 概述 官方文档快递 环境&#xff1a;hadoop 版本 3.3.6 相关文章速递 架构 HDFS HDFS 架构总结如下&#xff1a; a master/slave architecture 一主多从架构a file is split into one or more blocks a…

SylixOS各阶段代号说明

SylixOS已经历了多年更新迭代&#xff0c;每个阶段都会新增或完善一个重要领域&#xff0c;并命名一个代号&#xff0c;以表祝愿和纪念。

工具网站DefiLlama全攻略:从零学习链上数据使用与发现

DefiLlama 是一个 DeFi(去中心化金融)信息聚合器,其主要功能是提供各种 DeFi 平台的准确、全面数据。DefiLlama 致力于在不受广告或赞助内容影响的情况下为用户提供这些数据,以确保信息内容的透明度和公正性,该平台聚合来自多个区块链的数据,让用户能够全面了解 DeFi 格局…

全球海洋数据 (GLODAP) v2.2023(海洋碳数据产品)

全球海洋数据分析项目 (GLODAP) v2.2023 全球海洋数据分析项目 (GLODAP) v2.2023 代表了海洋生物地球化学瓶数据合成方面的重大进步。此更新主要关注海水无机碳化学&#xff0c;以 GLODAPv2.2022 为基础&#xff0c;包含多项关键增强功能。值得注意的是&#xff0c;增加了 43 …

大数据StarRocks(三) StarRocks数据表设计

1. 列式存储 1.1 列式存储方式有以下几个优点&#xff1a; 1.快速的数据查询 由于数据是按照列进行存储的&#xff0c;所以查询某个列时只需要读取该列所在的块&#xff0c;而不是整行数据&#xff0c;从而大大提高了查询效率。 2.压缩效率高 由于列式存储的数据块中只有一…

blender mix节点和它的混合模式

Mix 节点是一种用于混合两个颜色或者两个图像的节点&#xff0c;它有以下几个输入和输出&#xff1a; Color1&#xff1a;用于接收第一个颜色或者图像&#xff0c;也就是基色。Color2&#xff1a;用于接收第二个颜色或者图像&#xff0c;也就是混合色。Fac&#xff1a;用于控制…

一文讲透Stata计量经济学中如何分中东西区域回归?

stata如何分中东西区域回归本质上是异质性检验。 异质性检验即针对样本进行分类分组&#xff0c;基于各组样本分别开展的实证检验。异质性检验通常在基准回归之后&#xff0c;基准回归依据的是全部的样本&#xff0c;当基准回归得到的结果较为显著&#xff0c;即核心解释变量显…

2023年03月21日_chatgpt宕机事件的简单回顾

你能想象吗 ChatGPT挂了 昨天半夜呢 来自全球各地的用户纷纷发现 ChatGPT的网站弹出了报错警告的信息 然后立即就无法使用了 即使是有特权的plus账户也未能幸免 一时之间呢 chatgptdown的话题在Twitter刷屏 不少重度的用户表示很着急 有的用户说呢没了ChatGPT 这工作…

Vue3地图选点组件

Vue3地图选点组件 <template><div style"width: 100%; height: 500px"><div class"search-container"><el-autocompletev-model"suggestionKeyWord"class"search-container__input"clearable:fetch-suggestion…

Hadoop入门学习笔记——八、数据分析综合案例

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记&#xff08;汇总&#xff09; 目录 八、数据分析综合案例8.1. 需求分析8.1.1. 背景介绍8.1.2…

【C语言】计算机原码,反码,补码

机器数 一个数在计算机中的表现形式叫做机器数&#xff0c;这个数有正负之分&#xff0c;在计算机中用一个数的最高位&#xff08;符号位&#xff09;用来表示它的正负&#xff0c;其中0表示正数&#xff0c;1表示负数。 例如正数7&#xff0c;在计算机中用一个8位的二进制数…

Transforer逐模块讲解

本文将按照transformer的结构图依次对各个模块进行讲解&#xff1a; 可以看一下模型的大致结构&#xff1a;主要有encode和decode两大部分组成&#xff0c;数据经过词embedding以及位置embedding得到encode的时输入数据 输入部分 embedding就是从原始数据中提取出单词或位置&…

C之BS开发

一、 BS 概述与 boa 搭建 1.1 BS 模式开发概述 BS 模式&#xff1a; 浏览器与服务器模式&#xff0c; 即通过浏览器访问服务器的 Web 资源。 1.1.1 web 前端开发技术 主要包含&#xff1a; HTML 、 CSS 、 XML/JSON 、 Javascript 、 AJAX HTML 超文本标记语言 ( 英文全称…

ssm基于web的素材网的设计与实现+vue论文

基于web的素材网站的设计与实现 摘要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。传统的素材信息管理模式&#xff0c;采用人工登记的方式保存相关数据&#xff0c;这种以人力为主的管理…

实现区域地图散点图效果,vue+echart地图+散点图

需求&#xff1a;根据后端返回的定位坐标数据实现定位渲染 1.效果图 2.准备工作,在main.js和index.js文件中添加以下内容 main.js app.use(BaiduMap, {// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ak: sRDDfAKpCSG5iF1rvwph4Q95M…