当前位置: 首页 > news >正文

Java奠基】方法的讲解与使用

目录

方法概述

方法的定义与调用

方法的重载

方法的值传递


方法概述

方法是程序中最小的执行单元,在实际开发中会将重复的具有独立功能的代码抽取到方法中,这样可以提高代码的复用性和可维护性。

方法的定义与调用

在Java中定义方法的格式都是相同的,不过根据具体的需要可以抽离成以下三种形式方法,如下:

最简单的方法定义,格式如下:

public static void 方法名() { 方法体(就是打包起来的代码) };

public class Main {public static void main(String[] args) {// 调用say方法say();}// 定义一个方法public static void say(){System.out.println("你好,世界!"); // 你好,世界!}
}

带参数的方法定义,格式如下:

public static void 方法名(参数1,参数2....){ 方法体 };

求和

public class Main {public static void main(String[] args) {// 调用getSum方法getSum(10,20); // 实参,方法调用中的参数}// 定义一个方法public static void getSum(int n,int m){ // 形参,方法定义中的参数int sum = n + m;System.out.println(sum);}
}

打印原数组

public class Main {public static void main(String[] args) {// 将数组进行打印在控制台int[] arr = {12,14,15,16,17,18};// 调用方法printArr(arr); // [12,14,15,16,17,18]}// 定义一个方法public static void printArr(int[] arr){System.out.print("[");for (int i = 0; i < arr.length; i++) {if(i==arr.length-1){System.out.print(arr[i]);}else{System.out.print(arr[i]+",");}}System.out.print("]");}
}

带返回值的方法定义,格式如下:

public static 返回值类型 方法名 (参数) { 方法体; return 返回值; };

如果想在调用处要根据方法的结果,去编写另外一段代码的逻辑,为了在调用处拿到方法产生的结果,就需要定义带有返回值的方法。方法的返回值其实就是方法运行的最终结果。

数组求和

public class Main {public static void main(String[] args) {// 直接调用,如果是带有返回值的方法,是没有任何结果的getSum(10,20,30);// 赋值调用int result = getSum(10,20,30);System.out.println(result); // 60// 输出调用System.out.println(getSum(10,20,30)); // 60}// 定义一个方法public static int getSum(int n,int m,int x){int sum = n + m + x;return sum;}
}

数组求最大值

public class Main {public static void main(String[] args) {// 将数组进行打印在控制台int[] arr = {12,14,15,16,17,18};// 调用方法int result = getMax(arr);// 打印System.out.println(result); // 18}// 定义一个方法public static int getMax(int[] arr){int max = arr[0];for (int i = 1; i < arr.length; i++) {if(max<arr[i]){max = arr[i];}}return max;}
}

判断数组是否存在元素

public class Main {public static void main(String[] args) {// 定义数组int[] arr = {12,14,15,16,17,18};// 判断一个数字是否在数组中存储boolean result = decide(arr,10);// 打印结果System.out.println(result); // false}// 定义一个方法public static boolean decide(int[] arr,int number){for (int i = 0; i < arr.length; i++) {if(arr[i] == number){return true;}}// 当数组中的所有数据比较完毕之后,还是没有任何结果则执行以下语句。return false;}
}

拷贝数组

public class Main {public static void main(String[] args) {// 定义数组int[] arr = {12,14,15,16,17,18};// 调用方法拷贝数据int[] copyArr = copyArr(arr,1,4);// 14 15 16 // 遍历copyArrfor (int i = 0; i < copyArr.length; i++) {System.out.print(copyArr[i]+" ");}}// 定义一个方法public static int[] copyArr(int[] arr,int from,int to){// 定义数组int[] newArr = new int[to - from];// 伪造索引int index = 0;for (int i = from; i < to; i++) {newArr[index] = arr[i];index++;}// 将新数组返回return newArr;}
}

注意

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

return语句下面,不能编写代码,因为永远执行不到,属于无效代码。

方法的重载

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

简单理解:同一个类中,方法名相同,参数不同的方法,与返回值无关。

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

public class Main {public static void main(String[] args) {// 调用方法compare(1,2);compare((byte)1,(byte)2);compare((short)1,(short)2);compare(1.1,2.2);}// 定义一个方法public static void compare(byte b1,byte b2){System.out.println("byte");}public static void compare(short s1,short s2){System.out.println("short");}public static void compare(int i1,int i2){System.out.println("int");}public static void compare(double d1,double d2){System.out.println("double");}
}

方法的值传递

传递基本数据类型时,传递的是真实的数据,形参的改变不影响实际参数的值:

public class Main {public static void main(String[] args) {int number = 100;System.out.println("调用change方法前:"+number);// 100change(number);System.out.println("调用change方法后:"+number);// 100}// 定义一个方法public static void change(int number){number = 200;}
}

如果想改变number的值,需要将方法中的number的值return出去来修改main方法的number内存值

传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值:

public class Main {public static void main(String[] args) {int[] arr = {10,130,12,14,144};System.out.println("调用change方法前:"+arr[1]);// 130change(arr);System.out.println("调用change方法后:"+arr[1]);// 200}// 定义一个方法public static void change(int[] arr){arr[1] = 200;}
}

相关文章:

Java奠基】方法的讲解与使用

目录 方法概述 方法的定义与调用 方法的重载 方法的值传递 方法概述 方法是程序中最小的执行单元&#xff0c;在实际开发中会将重复的具有独立功能的代码抽取到方法中&#xff0c;这样可以提高代码的复用性和可维护性。 方法的定义与调用 在Java中定义方法的格式都是相同…...

字符串hash

K - 子串翻转回文串2020ccpc河南省赛字符串哈希&#xff1a;将字符串变成x进制数对公式的理解&#xff1a;举个十进制数的例子&#xff1a;123456h[1]1&#xff1b;h[2]1*10212;h[3]12*103123;h[4]123*1041234;.........h[i]h[i-1]*xa[i];h[i]代表的恰巧是整个数的前缀用p[i]表…...

试题 算法训练 转圈游戏

问题描述 n个小伙伴&#xff08;编号从0到n-1&#xff09;围坐一圈玩游戏。按照顺时针方向给n个位置编号&#xff0c;从0到n-1。   最初&#xff0c;第0号小伙伴在第0号位置&#xff0c;第1号小伙伴在第 1 号位置&#xff0c;……&#xff0c;依此类推。   游戏规则如下&am…...

【uni-app教程】九、运行环境判断与跨端兼容

&#xff08;1&#xff09;开发环境和生产环境 uni-app 可通过 process.env.NODE_ENV 判断当前环境是开发环境还是生产环境&#xff0c;一般用于连接测试服务器或生产服务器的动态切换。 在HBuilderX 中&#xff0c;点击「运行」编译出来的代码是开发环境&#xff0c;点击「发行…...

扩展WSL2虚拟硬盘的大小

扩展WSL2虚拟硬盘的大小 1、在 Windows PowerShell 中终止所有 WSL 实例 wsl --shutdown2、查看 WSL 实例运行状态&#xff0c;确认关闭&#xff0c;并记住发行版的名称 wsl -l -v如果没有更改移动过发行版安装包位置&#xff0c;那么可以通过以下方法查找到发行版的安装包位…...

Win系统蓝牙设备频繁卡顿/断连 - 解决方案

Win系统蓝牙设备频繁卡顿/断连 - 解决方案前言常见网卡Intel无线网卡&#xff08;推荐&#xff09;Realtek无线网卡总结查看本机网卡解决方案更新驱动更换网卡&#xff08;推荐&#xff09;前言 无线网卡有2个模块&#xff0c;一个是WiFi&#xff0c;一个是蓝牙&#xff0c;因…...

Git学习入门(2)- 基本命令操作总结

个人博客&#xff1a;我的个人博客&#xff0c;各位大佬来玩1 创建 git仓库1.1 从现有工作目录中初始化新仓库需要到你需要用git管理的项目中输入以下命令&#xff1a;git init便会创建一个空的git项目&#xff0c;并且当前目录下会出现一个名为 .git 的目录&#xff0c; Git 需…...

SPringCloud:Nacos快速入门及相关属性配置

目录 一、Nacos快速入门 1、在父工程中添加spring-cloud-alilbaba的管理依赖 2、如果有使用eureka依赖&#xff0c;将其注释 3、添加nacos的客户端依赖 4、修改yml文件&#xff0c;注释eureka配置 5、启动测试 二、Nacos相关属性配置 1、Nacos服务分级存储 2、根据集群…...

医疗器械之模糊算法(嵌入式部分)

模糊控制 所谓模糊控制&#xff0c;就是对难以用已有规律描述的复杂系统&#xff0c;采用自然语言&#xff08;如大&#xff0c;中&#xff0c;小&#xff09;加以描述&#xff0c;借助定性的&#xff0c;不精确的以及模糊的条件语句来表达&#xff0c;模糊控制是一种基于语言的…...

网上销售笔记本系统

技术&#xff1a;Java、JSP等摘要&#xff1a;本文讲述了基于B/S模式的笔记本电脑在线销售系统的设计与实现。所谓的笔记本电脑在线销售系统是通过网站推广互联企业的笔记本电脑和技术服务&#xff0c;并使客户随时可以了解企业和企业的产品&#xff0c;为客户提供在线服务和订…...

MySQL基础查询操作

文章目录&#x1f68f; Select语句&#x1f680; 一、SQL底层执行原理&#x1f6ac; &#xff08;一&#xff09;、查询的结构&#x1f6ac; &#xff08;二&#xff09;、SQL语句的执行过程&#x1f6ad; 1、WHERE 为什么不包含聚合函数的过滤条件&#xff1f;&#xff08;面试…...

English Learning - L2 语音作业打卡 小元音 [ʌ] [ɒ] Day9 2023.3.1 周三

English Learning - L2 语音作业打卡 小元音 [ʌ] [ɒ] Day9 2023.3.1 周三&#x1f48c;发音小贴士&#xff1a;&#x1f48c;当日目标音发音规则/技巧:&#x1f36d; Part 1【热身练习】&#x1f36d; Part2【练习内容】&#x1f36d;【练习感受】&#x1f353;元音 [ʌ]&…...

Condition 源码解读

一、Condition 在并发情况下进行线程间的协调&#xff0c;如果是使用的 synchronized 锁&#xff0c;我们可以使用 wait/notify 进行唤醒&#xff0c;如果是使用的 Lock 锁的方式&#xff0c;则可以使用 Condition 进行针对性的阻塞和唤醒&#xff0c;相较于 wait/notify 使用…...

看完这篇入门性能测试

大家好&#xff0c;我是洋子。最近组内在进行服务端高并发接口的性能压测工作&#xff0c;起因是2023年2月2日&#xff0c;针对胡某宇事件进行新闻发布会直播&#xff0c;几十万人同时进入某媒体直播间&#xff0c;造成流量激增 从监控上可以看出&#xff0c;QPS到达某峰值后&…...

推导部分和——带权并查集

题解&#xff1a; 带权并查集 引言&#xff1a; 带权并查集是一种进阶的并查集&#xff0c;通常&#xff0c;结点i的权值等于结点i到根节点的距离&#xff0c;对于带权并查集&#xff0c;有两种操作需要掌握——Merge与Find&#xff0c;涉及到路径压缩与维护权值等技巧。 带…...

费解的开关/翻硬币

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a; 算法 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 题目&#xff1a;费解的开关 你玩过“拉灯”游戏吗&#xff1f; 25盏灯排成一个 55 的方形。 每一个灯都有一个开关&…...

OpenGL中的坐标系

1、2D笛卡尔坐标系2D笛卡尔坐标系跟我们高中的时候学习的坐标系一样&#xff0c;是由x、y决定的。2、3D笛卡尔坐标系3D笛卡尔坐标系坐标由x、y、z决定&#xff0c;满足右手定则。3、视口glViewport(GLint x,GLint y,GLsizei width,GLsizei height)窗口和视口大小可以相同&#…...

Spring——Spring介绍和IOC相关概念

Spring是以Spring Framework为核心&#xff0c;其余的例如Spring MVC&#xff0c; Spring Cloud&#xff0c;Spring Data&#xff0c;Spring Security SpringBoot的基础都是Spring Framework。 Spring Boot可以在简化开发的基础上加速开发。 Spring Cloud分布式开发 Spring有…...

A+B Problem

AB Problem 题目描述 输入两个整数 a,ba, ba,b&#xff0c;输出它们的和&#xff08;∣a∣,∣b∣≤109|a|,|b| \le {10}^9∣a∣,∣b∣≤109&#xff09;。 注意 Pascal 使用 integer 会爆掉哦&#xff01;有负数哦&#xff01;C/C 的 main 函数必须是 int 类型&#xff0c;…...

【ROS学习笔记11】ROS元功能包与launch文件的使用

【ROS学习笔记11】ROS元功能包与launch文件的使用 文章目录【ROS学习笔记11】ROS元功能包与launch文件的使用前言一、ROS元功能包二、ROS节点运行管理launch文件2.1 launch文件标签之launch2.2 launch文件标签之node2.3 launch文件标签之include2.4 launch文件标签之remap2.5 l…...

Janus-Pro-7B播客制作:音频波形图识别+内容摘要与章节标记生成

Janus-Pro-7B播客制作&#xff1a;音频波形图识别内容摘要与章节标记生成 1. 引言&#xff1a;播客制作的新思路 播客制作通常需要大量的人工工作&#xff1a;听完整期节目、标记关键章节、撰写内容摘要、制作时间轴标记。这个过程耗时耗力&#xff0c;特别是对于长篇播客内容…...

2026年4月OpenClaw部署方法:本地服务器部署OpenClaw、配置百炼APIKey、集成Skill详细教程

2026年4月OpenClaw部署方法&#xff1a;本地服务器部署OpenClaw、配置百炼APIKey、集成Skill详细教程。OpenClaw&#xff08;原Clawdbot&#xff09;作为2026年主流的AI自动化助理平台&#xff0c;可通过阿里云轻量服务器实现724小时稳定运行&#xff0c;并快速接入钉钉&#x…...

从顺序图反推代码:如何设计一个高内聚低耦合的网上书城后端服务?

从顺序图到高内聚低耦合架构&#xff1a;网上书城后端设计实战 当我们在白板上画完一张精美的顺序图时&#xff0c;真正的挑战才刚刚开始——如何将这些交互箭头转化为可维护、易扩展的代码结构&#xff1f;我曾参与过一个日均订单量超过5万单的图书电商平台重构&#xff0c;深…...

Harness Engineering 核心概念详解

文章目录1. Harness Engineering 的本质定义1.1 核心定义1.2 诞生的历史时刻1.3 "Harness" 的本意2. Agent Model Harness 核心公式2.1 公式解读2.2 LangChain 工程师的精炼定义2.3 类比&#xff1a;CPU 与操作系统3. Harness 三大支柱详解3.1 支柱一&#xff1a;上…...

OpenClaw飞书机器人实战:千问3.5-9B自动回复消息

OpenClaw飞书机器人实战&#xff1a;千问3.5-9B自动回复消息 1. 为什么选择OpenClaw飞书千问3.5-9B组合&#xff1f; 去年底我开始尝试用AI自动化处理团队沟通需求时&#xff0c;发现市面上大多数方案要么需要将数据上传到第三方平台&#xff0c;要么配置复杂得让人望而却步。…...

OpenClaw邮件自动化:千问3.5-9B处理邮件分类与回复

OpenClaw邮件自动化&#xff1a;千问3.5-9B处理邮件分类与回复 1. 为什么需要邮件自动化助手 每天早晨打开邮箱&#xff0c;看到堆积如山的未读邮件时&#xff0c;那种窒息感我太熟悉了。作为技术团队的接口人&#xff0c;我的邮箱常年保持200未读状态——客户咨询、会议邀请…...

Kubernetes集群快速搭建指南

Kubernetes集群快速搭建指南 引言&#xff1a;Kubernetes的时代 哥们&#xff0c;别整那些花里胡哨的&#xff01;作为一个前端开发兼摇滚鼓手&#xff0c;我最烦的就是复杂的环境搭建。但Kubernetes作为云原生时代的基础设施&#xff0c;你不得不掌握它。今天&#xff0c;我就…...

OBS多平台同步推流插件深度解析:技术架构与实战应用

OBS多平台同步推流插件深度解析&#xff1a;技术架构与实战应用 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 在当今内容创作者和虚拟主播日益增长的需求下&#xff0c;多平台直播已成…...

SenseVoicecpp ggml-vulkan.cpp大模型[AI人工智能(七十八)]—东方仙盟

ggml-vulkan.cpp核心代码ggml-vulkan 里负责【矩阵乘法 量化模型推理 GPU 调度】的核心代码。1. 核心功能支持所有量化类型&#xff1a;Q4_K、Q5_K、Q8_0、IQ2/3/4、F16、F32 等自动选择最优计算管线&#xff1a;根据数据类型选 FP16/FP32 精度管理 GPU 内存&#xff1a;显存…...

基于51单片机的电子秤(4挡)proteus、原理图、流程图 1185-基于51单片机的电子秤...

基于51单片机的电子秤&#xff08;4挡&#xff09;proteus、原理图、流程图 1185-基于51单片机的电子秤&#xff08;4挡&#xff09;proteus、原理图、流程图、物料清单、仿真图、源代码 功能介绍&#xff1a; 1、基本部分 &#xff08;1&#xff09;称重范围用开关分为三挡&am…...