关于java的方法及定义

关于java的方法及定义

我们在之前的文章中介绍了java的流程控制等内容,本篇文章,我们要介绍一下java中的方法,这个是非常关键的😀!

什么是方法

我们用之前我们最常见的System.out.println(); 来举例。

System是类,out是对象(我们后期会详细说明对象的概念)println();就是方法。

  • java的方法就是语句的集合,一些语句在一起执行一个功能。
public class Demo
{//main方法public static void main(String[] args){System.out.println("Hello,World!");//执行了输出Hello,World!}
}
  • 方法是解决一类问题的步骤的有序组合。
  • 方法包含在类或对象里。(用我们之前学习过的Scanner举例)
import java.util.Scanner;public class Demo
{public static void main(String[] args){Scanner scanner = new Scanner(System.in);scanner.close();//close就是创建对象后,包含于Scanner这个类中,所以可以使用。}
}
  • 如果创建一个对象,或者这个方法在类里面,可以用. 点出里面可以使用的方法。
  • 方法在程序中被创建,在其他的地方被引用。

设计方法的原则

  • 方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。比如以后在工作中,别人写了个方法,需要改动,如果一个方法中实现很多功能并且引用的地方很多的话,是不好轻易改动的,所以一个方法中写一个功能,这样改动起来也是很舒适的😎
  • 方法的命名规则,我们在以前的标识符文章中谈到过,要首字母小写,然后遵循驼峰原则,例如:addNumber。

方法的定义

java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段一个方法包含以下语法,首先来介绍一下方法的结构,然后逐一介绍一下每个部分的作用。

修饰符 + 返回值类型 +方法名(参数类型 参数名)
{...方法体...return 返回值;
}
  • 方法包含一个方法头和一个方法体。下面是一个方法的所有部分

    1、修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型(访问类型目前我们只见到了public,是公用类型,我们以后的文章中会介绍更多的访问类型)。

    2、返回值类型:方法可能会返回值。returnValueTvpe 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void,比如,返回int,就填int,没有返回值就写void。

    3、方法名:是方法的实际名称。方法名和参数表共同构成方法签名。

    4、参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

    5、形参和实参:形参在方法被调用时用于接收外界输入的数据。实参是调用方法的时候,传递的实际参数。

    6、方法体:方法体包含具体的语句,定义该方法的功能。

我们了解完基本的方法结构以后,要用代码去演示一下,光看文字是不能更好的理解,去代码中看的更清晰。

我们来定义一个加法,然后调用🤔

public class Demo
{//main方法public static void main(String[] args){int sum=add(1,2);//实参System.out.println(sum);}//加法//修饰符  返回值类型 方法名 参数类型 参数名(可多个)public static int add(int num1,int num2)//形参{return num1+num2;//返回值}
}

我们运行一下上面的代码,可以看到一下内容

3进程结束....

我们可以看到,定义方法的时候,用到了static修饰符,这里是为了方便调用,所以用了静态。

我们也可以看到,传的实际参数是1和2,形参是方法中定义的参数,通过把实际参数传递给方法,方法执行内容,返回一个值。

下面来了解一下没有返回值的方法,正好用我们以前文章中的for循环找数,我们将他封装成一个方法。

关于java循环结构for

我们就把用for循环输出1-300之间能被5整除的数,并且每行输出3个,这个题目封装成方法😎

public class Demo {public static void main(String[] args){test();}//不用返回值,所以我们用void,可以直接调用输出。public static void test(){for (int i = 1; i < 300; i++){if (i%5==0){System.out.print(i+"\t");}if (i%15==0){System.out.println();}}}
}

我们运行一下上面的代码,可以看到,输出的内容和我们不封装的时候输出的内容是一样的。

5	10	15	
20	25	30	
35	40	45	
50	55	60	
65	70	75	
80	85	90	
95	100	105	
110	115	120	
125	130	135	
140	145	150	
155	160	165	
170	175	180	
185	190	195	
200	205	210	
215	220	225	
230	235	240	
245	250	255	
260	265	270	
275	280	285	
290	295	进程结束.....

在main方法中,其实越简洁越好,所以把一些代码封装成方法,也是一个好的程序猿要做的事情。

方法的调用

  • 调用方法:对象名.方法名(实参)
  • java 支持两种调用方法的方式,根据方法是否返回值来选择。
  • 一种是像上面说的有返回值,方法会被当成一个值。
int sum=add(1,2);
  • 另一种是没有返回值,返回值是void,调用就是一条语句。
test();

我们再写出一个两个数比大小的方法:

public class Test {public static void main(String[] args){int sum=max(88,99);System.out.println(sum);}//比大小public static int max(int num1,int num2){int result=0;if (num1==num2){System.out.println("两个数相等不能比较");return 0;}if (num1>num2){result =num1;}else{result =num2;}return result;}}

这里我们可以发现,如果方法里面有判断的话,不能每个都去return,我们可以定义一个变量,这个变量初始化的时候可以是任意值,因为我们传实参的时候,会把这个值覆盖掉,例如我们上面代码中的result。我们把值先赋给result,然后最后返回result就可以了。

我们还可以发现,如果两个数相等的时候,不能做比较,就无法输出result,所以写了一个return 0,这里拓展一下,return既可以是程序返回,也可以是终止方法。遇到了就不再向下进行了,我们实参改为相同的数字,运行一下就会出现下面内容。

两个数相等不能比较
0进程结束.....

一个方法中,我们如果出现了判断,一定要锻炼自己的逻辑完整性,考虑到各种会发生的情况😀。

值传递和引用传递

  • 值传递:是指在调用方法时,将实际参数复制一份传递到方法中,这样在方法中如果对形式参数进行修改,就不会影响到实际参数,java就是值传递。
public class Demo
{//main方法public static void main(String[] args){int sum=add(1,2);//实参System.out.println(sum);}//加法//修饰符  返回值类型 方法名 参数类型 参数名(可多个)public static int add(int num1,int num2)//形参{return num1+num2;//返回值}
}

我们将方法中的num1和num2换成别的参数名,对上面调用的运算结果是没有影响的。

  • 引用传递:是指在调用方法时,将实际参数的地址传递到方法中,那么在方法中对形式参数进行修改,将会影响到实际参数。这个涉及到对象,我们后续了解到对象的时候会详细的说明。

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

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

相关文章

Ef Core花里胡哨系列(5) 动态修改追踪的实体、动态查询

Ef Core花里胡哨系列(5) 动态修改追踪的实体、动态查询 同样还是IModelCacheKeyFactory&#xff0c;不过这次要采用主动刷新的方式。 实现DbContext 动态实体&#xff0c;根据配置等生成动态类型来当作数据库实体使用&#xff0c;当配置修改时&#xff0c;可以调用DynamicMo…

Redis(二)数据类型

文章目录 官网备注十大数据类型StringListHashSetZSetBitmapHyperLogLog&#xff1a;GEOStreamBitfield 官网 英文&#xff1a;https://redis.io/commands/ 中文&#xff1a;http://www.redis.cn/commands.html 备注 命令不区分大小写&#xff0c;key区分大小写帮助命令help…

关于时间格式yyyy-M-d或yyyy-MM-d到yyyy-MM-dd的转换

工作时遇到前端传的时间格式是"2023-12-3 17:41:52"&#xff0c;和"2023-1-1 17:41:52"但是我想要的是"2023-12-03 17:41:52"和"2023-01-01 17:41:52"。下面给大家分享几个解决方法 方法一&#xff1a; 找前端&#xff01;让他改&…

CSS属性的计算过程和层叠规则总结

✨ 专栏介绍 HTML/CSS专栏合集是一个涵盖HTML和CSS两个方面的栏目。HTML是一种标记语言&#xff0c;用于创建网页的结构和内容&#xff0c;而CSS是一种样式表语言&#xff0c;用于控制网页的外观和布局。 在HTML/CSS专栏合集中&#xff0c;我们将深入探讨HTML和CSS的基础知识…

汽车架构解析:python cantools库快速解析arxml

文章目录 前言一、安装cantools二、官方说明文档三、cantools方法1、解析message的属性2、解析pdu中的signals3、根据message查找signals4、报文组成bytes 总结 前言 曾经有拿cantools来解析过dbc&#xff0c;用得比较浅&#xff0c;不知道可以用来解析arxml。最近有个需求需要…

vfb控件数组的实现原理(visual freebasic ide),64位VB6 vb7

vfb控件数组的实现原理(visual freebasic ide),64位VB6 vb7 Sub Form1_Command1_BN_Clicked(ControlIndex As Long, hWndForm As hWnd, hWndControl As hWnd)MsgBox ("Command1 ControlIndex" & ControlIndex & ",Command1(x).Caption " & …

【纯java代码实现字符串运算符或公式计算,支持函数,不借助第三方依赖、工具】

纯java代码实现字符串运算符或公式计算&#xff0c;支持函数&#xff0c;不借助第三方依赖和工具 效果图代码 效果图 代码 import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import…

在 Oracle 数据库表中加载多个数据文件

在本文中&#xff0c;我将展示 SQL 加载器 Unix 脚本实用程序的强大功能&#xff0c;其中 SQL 加载器可以使用自动 shell 脚本加载多个数据文件。这在处理大量数据以及需要将数据从一个系统移动到另一个系统时非常有用。 它适合涉及大量历史数据的迁移项目。那么就不可能为每…

Elasticsearch:带有自查询检索器的聊天机器人示例

本工作簿演示了 Elasticsearch 的自查询检索器 (self-query retriever) 将问题转换为结构化查询并将结构化查询应用于 Elasticsearch 索引的示例。 在开始之前&#xff0c;我们首先使用 langchain 将文档分割成块&#xff0c;然后使用 ElasticsearchStore.from_documents 创建…

企业微信开发:自建应用:接收消息(企业内部服务器)/回调配置

概述 在企业微信的自建应用中&#xff0c;用户触发了某些行为&#xff08;发送消息、进行菜单操作或者外部联系人变更等&#xff09;&#xff0c;要发送相关信息给企业内部服务器。 备注&#xff1a;接收消息 和 回调&#xff0c;在本文中指代相同的行为&#xff0c;即企业微信…

vs code导入excel文件并且解析excel文件数据

实习工作需要通过vs code导入excel文件并且解析excel文件数据&#xff0c;学习整理了一下相关方法分享给大家^_^ VS Code 中导入和解析 Excel 文件 要在 VS Code 中导入和解析 Excel 文件&#xff0c;你可以使用一些库和扩展来帮助你完成这个任务。以下是一种常用的方法&…

【PostgreSQL】表操作-表权限

【PostgreSQL】表操作快速链接 创建表及基础表命令 修改表 表权限 创建对象时&#xff0c;会为其分配所有者。所有者通常是执行创建语句的角色。对于大多数类型的对象&#xff0c;初始状态是只有所有者&#xff08;或超级用户&#xff09;才能对对象执行任何操作。要允许其他角…

c基础(二)

指针&#xff1a; 含义&#xff1a;是一个值&#xff0c;一个值代表着一个内存地址&#xff0c;类似于存放路径 * 运算符 &#xff1a; 1 字符*表示指针 作用&#xff1a;通常跟在类型关键字的后面&#xff0c;表示指针指向的是什么类型的值 int * foo, * bar;声明指针后会…

Jenkins部署项目

一.安装jenkins 1.1进入jenkins官网下载jenkins war包&#xff0c;上传到服务器/usr/local目录。 1.2执行启动jenkins命令&#xff0c;&#xff08;注意jenkins版本需要的jdk版本&#xff09; /usr/local/java11/bin/java -Djava.awt.headlesstrue -jar /usr/local/jenkins.wa…

使用sdf文件+urdf文件模拟机器人示例(不用把urdf转sdf)

gazebo版本&#xff1a;harmonic&#xff1b; <launch> <group> <let name"robot_description" value"$(command xacro $(find-pkg-share gazebo_pkg)/urdf/total.xacro)"/> <node pkg"rviz2" exec"rviz2" name…

fastApi 项目

参考&#xff1a; 中文文档&#xff1a;FastAPI API接口开发其实特简单&#xff0c;Python FastApi Web 框架教程来了_根据接口文档用fastapi开发接口-CSDN博客 Python框架篇(1):FastApi-快速入门 - 知乎 官方示例目录结构 更大的应用 - 多个文件 - FastAPI . ├── app …

[讲座] - 闲聊工业设计

1&#xff0c;工业设计相关的学科分类 2&#xff0c;工业设计的职业发展路线 3&#xff0c;工业设计师的成名人物 4&#xff0c;设计了可口可乐的Loewy 可口可乐的瓶子&#xff0c;无论白天晚上还是瓶子被打碎&#xff0c;都能认出这个是可口可乐的瓶子。 草图参照了可可豆&am…

深度生成模型之GAN优化目标设计与改进 ->(个人学习记录笔记)

文章目录 深度生成模型之GAN优化目标设计与改进原始GAN优化目标的问题1. JS散度度量问题2. 梯度问题 优化目标的设计与改进1. 最小二乘损失GAN2. Energy-based GAN(EBGAN)3. Wasserstein GAN4. WGAN-GP5. Boundary Equilibrium GAN(BEGAN)6. Loss Sensitive GAN7. Relativeisti…

Cuk、Zeta和Sepic开关电源拓扑结构

Cuk、Zeta和Sepic变换器,三种拓扑结构大致类似。不同点在于电感和二极管&#xff0c;MOS管的位置关系的变化。 Cuk电源是一种非隔离的直流电源转换器&#xff0c;其基本结构包括输入滤波电容、开关管、输入电感、输出电感和输出电容等元件。Cuk电路可以看作是Boost和Buck电路的…

基于双闭环PI和SVPWM的PMSM控制器simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 双闭环PI控制器设计 4.2 SVPWM技术 4.3 控制系统实现 5.完整工程文件 1.课题概述 基于双闭环PI和SVPWM的PMSM控制器simulink建模与仿真。系统包括逆变桥、PMSM、park变换、clark变换、SVPWM、PI控…