day07-方法
7.1 方法概述​ 方法method是程序中最小的执行单元。重复的代码、具有独立功能的代码可以抽取到方法中。可以提高代码的复用性和可维护性。注意方法必须先创建才可以使用该过程成为方法定义方法创建后并不是直接可以运行的需要手动使用后才执行该过程成为方法调用7.2 方法的定义和调用7.2.1 无参数方法定义和调用定义格式public static void 方法名 ( ) { // 方法体; }调用格式方法名();注意方法必须先定义后调用否则程序将报错方法的定义写在类的里面main的外面无参数方法练习需求设计一个方法用于打印两个数中的较大数思路①定义一个方法用于打印两个数字中的较大数例如getMax()②方法中定义两个变量用于保存两个数字③使用分支语句分两种情况对两个数字的大小关系进行处理④在main()方法中调用定义好的方法代码public class MethodTest { public static void main(String[] args) { //在main()方法中调用定义好的方法 getMax(); } //定义一个方法用于打印两个数字中的较大数例如getMax() public static void getMax() { //方法中定义两个变量用于保存两个数字 int a 10; int b 20; if(a b) { System.out.println(a); } else { System.out.println(b); } } }7.2.2 带参数方法定义和调用定义格式参数由数据类型和变量名组成形如数据类型 变量名。参数范例int apublic static void 方法名 (参数1) { 方法体; } public static void 方法名 (参数1, 参数2, 参数3...) { 方法体; }范例public static void isEvenNumber(int number){ ... } public static void getMax(int num1, int num2){ ... }调用格式方法名(参数) 方法名(参数1,参数2参数3...);范例isEvenNumber(10); getMax(10,20);注意方法调用时参数的数量与类型必须与方法定义中的设置相匹配否则程序将报错方法定义时参数中的数据类型与变量名都不能缺少缺少任意一个程序将报错方法定义时多个参数之间使用逗号分隔形参和实参形参方法定义中的参数等同于变量定义格式例如int number实参方法调用中的参数等同于使用变量或常量例如10带参数方法练习需求设计一个方法用于打印两个数中的较大数数据来自于方法参数 }思路①定义一个方法用于打印两个数字中的较大数例如getMax()②为方法定义两个参数用于接收两个数字③使用分支语句分两种情况对两个数字的大小关系进行处理④在main()方法中调用定义好的方法使用常量⑤在main()方法中调用定义好的方法使用变量代码public class MethodTest { public static void main(String[] args) { //在main()方法中调用定义好的方法使用常量 getMax(10,20); //调用方法的时候人家要几个你就给几个人家要什么类型的你就给什么类型的 //getMax(30); //getMax(10.0,20.0); //在main()方法中调用定义好的方法使用变量 int a 10; int b 20; getMax(a, b); } //定义一个方法用于打印两个数字中的较大数例如getMax() //为方法定义两个参数用于接收两个数字 public static void getMax(int a, int b) { //使用分支语句分两种情况对两个数字的大小关系进行处理 if(a b) { System.out.println(a); } else { System.out.println(b); } } }方法定义的小技巧1. 我要干什么-----方法体2. 我干这件事情需要什么才能完成-----形参无参数方法还是带参数方法7.2.3 带返回值方法的定义和调用方法的返回值就是方法运行的最终结果。如果在调用处要根据方法的结果去编写另外一段代码逻辑。为了在调用处拿到方法产生的结果就需要定义带有返回值的方法。定义格式public static 返回值数据类型 方法名 ( 参数 ) { 方法体 return 返回值数据 ; }范例public static boolean isEvenNumber( int number ) { return true ; } public static int getMax( int a, int b ) { return 100 ; }注意方法定义时return后面的返回值与方法定义上的数据类型要匹配否则程序将报错调用格式直接调用 方法名 ( 实参 ) ; 赋值调用 数据类型 变量名 方法名 ( 实参 ) ; 输出调用 System.out.println(方法名 ( 实参 );范例isEvenNumber ( 5 ) ; boolean flag isEvenNumber ( 5 );注意方法的返回值通常会使用变量接收否则该返回值将无意义练习需求​ 定义一个方法求一家商场每个季度的营业额。根据方法结果再计算出全年营业额。代码示例public class MethodDemo9 { public static void main(String[] args) { int sum1 getSum(10, 20, 30); int sum2 getSum(10, 20, 30); int sum3 getSum(10, 20, 30); int sum4 getSum(10, 20, 30); int sum sum1 sum2 sum3 sum4; System.out.println(sum); } //1.我要干嘛 决定了方法体 每个季度的营业额 //2.我干这件事情需要什么才能完成 决定了形参 需要三个月的营业额 a b c //3.我干完这件事情看调用处是否需要使用方法的结果。 决定了返回值 //如果需要使用那么必须返回 //如果不需要使用可以返回也可以不返回 public static int getSum(int month1,int month2,int month3){ int sum month1 month2 month3; //因为方法的调用处需要继续使用这个结果,所以我们必须要把sum返回 return sum; } }需求​ 键盘录入两个圆的半径整数比较两个圆的面积。代码示例import java.util.Scanner; public class MethodDemo10 { public static void main(String[] args) { //键盘录入圆的半径 Scanner sc new Scanner(System.in); System.out.println(请输入圆的半径); int radii1 sc.nextInt(); System.out.println(请输入第二个圆的半径); int radii2 sc.nextInt(); double area1 getArea(radii1); double area2 getArea(radii2); if(area1 area2){ System.out.println(第一个圆更大); }else{ System.out.println(第二个圆更大); } } //1.我要干嘛 求圆的面积 //2.我干这件事情需要什么才能完成 半径 //3.方法的调用处是否需要继续使用方法的结果 要比较 public static double getArea(int radii) { double area 3.14 * radii * radii; return area; } }7.2.4 方法的注意事项1. 方法不能嵌套定义public class MethodDemo { public static void main(String[] args) { } public static void methodOne() { public static void methodTwo() { // 这里会引发编译错误!!! } } }2. void表示无返回值可以省略return也可以单独的书写return后面不加数据,表示结束方法。方法有返回值return必须写表示结束方法和返回结果示例代码public class MethodDemo { public static void main(String[] args) { } public static void methodTwo() { //return 100; 编译错误因为没有具体返回值类型 return; //System.out.println(100); return语句后面不能跟数据或代码 } }3. 方法不调用就不执行,方法编写顺序和执行顺序无关4.return语句下面,不能编写代码,因为永远执行不到,属于无效的代码5. 方法的通用格式public static 返回值类型 方法名(参数) { 方法体; return 数据 ; }7.3 方法重载在同一个类中定义了多个同名的方法这些同名的方法具有同种的功能。每个方法具有不同的参数类型或参数个数这些同名的方法就构成了重载关系简单记同一个类中方法名相同参数不同的方法参数不同个数、类型或顺序不同注意重载仅对应方法的定义与方法的调用无关调用方式参照标准格式重载仅针对同一个类中方法的名称与参数进行识别与返回值无关换句话说不能通过返回值来判定两个方法是否相互构成重载构成重载关系示例public class MethodDemo { public static void fn(int a) { //方法体 } public static int fn(double a) { //方法体 } } public class MethodDemo { public static float fn(int a) { //方法体 } public static int fn(int a , int b) { //方法体 } }不构成重载关系示例public class MethodDemo { public static void fn(int a) { //方法体 } public static int fn(int a) { /*错误原因重载与返回值无关*/ //方法体 } } public class MethodDemo01 { public static void fn(int a) { //方法体 } } public class MethodDemo02 { public static int fn(double a) { /*错误原因这是两个类的两个fn方法*/ //方法体 } }练习需求使用方法重载的思想设计比较两个整数是否相同的方法兼容全整数类型byte,short,int,long代码1public class MethodTest { public static void main(String[] args) { //调用方法 System.out.println(compare(10, 20)); System.out.println(compare((byte) 10, (byte) 20)); System.out.println(compare((short) 10, (short) 20)); System.out.println(compare(10L, 20L)); } //int public static boolean compare(int a, int b) { System.out.println(int); return a b; } //byte public static boolean compare(byte a, byte b) { System.out.println(byte); return a b; } //short public static boolean compare(short a, short b) { System.out.println(short); return a b; } //long public static boolean compare(long a, long b) { System.out.println(long); return a b; } }//代码2(灰色的方法名表示没有用到的)7.4 四类练习题7.4.1 数组遍历需求设计一个方法用于数组遍历要求遍历的结果是在一行上的。例如[11, 22, 33, 44, 55]因为要求结果在一行上输出所以这里需要在学习System.out.println(“内容”); 输出内容并换行System.out.print(“内容”); 输出内容不换行System.out.println(); 起到换行的作用代码public class Test1 { public static void main(String[] args) { /* System.out.println(aaa);//先打印数据aaa再进行换行 System.out.print(bbb);//只打印不换行 System.out.print(ddd); System.out.println();//不打印任何内容只换行 System.out.print(cc); */ int[] arr {1,2,3,4,5}; printArr(arr); } //1.我要遍历数组 //2.需要什么 数组 //3.调用处是否需要使用方法的结果。 public static void printArr(int[] arr){ System.out.print([); for (int i 0; i arr.length; i) { if(i arr.length - 1){ System.out.println(arr[i] ]); }else{ System.out.print(arr[i] , ); } } } }7.4.2 数组最大值需求设计一个方法求数组的最大值并将最大值返回代码public class MethodTest02 { public static void main(String[] args) { //定义一个数组用静态初始化完成数组元素初始化 int[] arr {12, 45, 98, 73, 60}; //调用获取最大值方法用变量接收返回结果 int number getMax(arr); //把结果输出在控制台 System.out.println(number: number); } //定义一个方法用来获取数组中的最大值 /* 两个明确 返回值类型int 参数int[] arr */ public static int getMax(int[] arr) { int max arr[0]; for(int x1; xarr.length; x) { if(arr[x] max) { max arr[x]; } } return max; } }7.4.3 判断数据是否存在需求定义一个方法判断数组中的某一个数是否存在将结果返回给调用处代码public static void main(String[] args) { //1.定义数组 int[] arr{1,5,8,12,56,89,34,67}; //2.判断一个数字在数组中是否存在 System.out.println(contains(arr,0)); } //我要干嘛? 判断数字在数组中是否存在 //我干这件事情需要什么才能完成? 数组和数字 //调用处是否需要继续使用结果? 返回true/false public static boolean contains(int[] arr,int number) { for (int i 0; i arr.length; i) { if(arr[i]number){ return true; } } return false; } //return 跟方法有关,表示结束方法或返回结果 //break 跟循环或switch有关7.4.4 复制数组需求定义一个方法copyOfRange(int[] arr,int from,int to)。将数组arr中从索引from包含from开始到索引to结束不包含to的元素复制到新数组中将新数组返回。代码public static void main(String[] args) { //1.定义原始数组 int[] arr {1, 2, 3, 4, 5, 6, 7, 8, 9}; //2.调用方法 int[] copyArr copyOfRange(arr, 3, 7); //3.遍历copyArr数组 for (int i 0; i copyArr.length; i) { System.out.print(copyArr[i] ); } } //注意copyOfRange方法的返回值类型为数组 int[] public static int[] copyOfRange(int[] arr, int from, int to) { //定义 动态 数组 int[] newArr new int[to - from]; //将原始数组中from到to之间的元素赋值给新数组 int index 0; for (int i from; i to; i) { newArr[index] arr[i]; index; } return newArr; }7.5 补充7.5.1 方法的内存图方法调用的基本内存原理方法传递基本数据类型的内存原理变量中存储的是真实的数据传递基本数据类型时传递的是真实的数据形参的改变不影响实际参数的值方法传递引用数据类型的内存原理new出来的都是引用数据类型引用就是使用了其它空间的数据变量中存储的是地址值传递引用数据类型时传递的是地址值形参的改变影响实际参数的值从内存的角度去解释基本数据类型数据值是存储在自己的空间中特点赋值给其他变量也是赋的真实的值修改形参不影响实参引用数据类型数据值是存储在其他空间中自己空间中存储的是地址值特点赋值给其他变量赋的是地址值

相关新闻

3分钟免费解决腾讯游戏卡顿:sguard_limit资源限制器完整指南

3分钟免费解决腾讯游戏卡顿:sguard_limit资源限制器完整指南

3分钟免费解决腾讯游戏卡顿:sguard_limit资源限制器完整指南 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 还在为DNF、LOL等腾讯游戏中的突…

2026/7/24 18:58:19阅读更多 →
足球口袋教练 HarmonyOS 方案(24):离线训练报告与周计划回看

足球口袋教练 HarmonyOS 方案(24):离线训练报告与周计划回看

一、复盘页要回答事实而不是拼接文案 离线训练报告至少要回答四个问题:这一周完成了什么、实际投入多少时间、原计划有哪些偏差、下周该保留或调整什么。若页面只把累计分钟、收藏数和一句建议拼成文本,用户无法追溯每个结论来自哪条记录,跨…

2026/7/24 18:58:19阅读更多 →
WeChatExporter终极指南:5步轻松实现微信聊天记录永久备份

WeChatExporter终极指南:5步轻松实现微信聊天记录永久备份

WeChatExporter终极指南:5步轻松实现微信聊天记录永久备份 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否担心微信聊天记录丢失?重要的工作…

2026/7/24 18:58:19阅读更多 →
道路巡检效率提升40倍怎么做到的?

道路巡检效率提升40倍怎么做到的?

道路巡检效率提升40倍需要同时解决车速、识别、闭环三个卡点。千寻位置基于驰观智脑(100 TOPS算力)慧眼灵控三件套,融合北斗车道级定位与AI边缘计算,实现80km/h不停车实时识别,端侧处理超10帧/秒。已在吉林、临沂、上海…

2026/7/24 20:22:36阅读更多 →
【JAVA毕设源码分享】基于springboot档案数字化项目管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot档案数字化项目管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/24 20:22:36阅读更多 →
【Springboot毕设全套源码+文档】基于springboot河南传统文化的展示与交流网站平台的设计与实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于springboot河南传统文化的展示与交流网站平台的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/24 20:22:36阅读更多 →
【JAVA毕设源码分享】基于springboot大学生实习与就业管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot大学生实习与就业管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/24 20:22:36阅读更多 →
界面控件DevExpress ASP.NET Data Grid组件 - 可快速处理各类型数据!(二)

界面控件DevExpress ASP.NET Data Grid组件 - 可快速处理各类型数据!(二)

由DevExpress开发的快速且功能完整的ASP.NET Web Forms的Data Grid组件,从全面的数据塑造和数据过滤选项到十多个集成数据编辑器,该套件提供了帮助用户构建极佳数据所需的一些,没有限制!在上文中,我们为大家介绍了DevE…

2026/7/24 20:22:36阅读更多 →
eBPF导出器:BPF指标接入Prometheus与Grafana

eBPF导出器:BPF指标接入Prometheus与Grafana

1. 背景与作用 在现代监控体系中,Prometheus + Grafana 已成为基础设施监控的事实标准。BPF(Berkeley Packet Filter)提供了强大的内核级性能观测能力,但如何将BPF收集的指标(如CPU run queue延迟、块I/O延迟)无缝融入Prometheus生态呢?Cloudflare开源的 ebpf_exporter…

2026/7/24 20:20:35阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 0:58:53阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 0:58:53阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 0:58:53阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

2026/7/24 0:00:06阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/24 19:00:40阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/24 19:00:40阅读更多 →