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

Java方法重载

重载

概念

重载就是在一个类中,有相同的函数名,但形参不同的函数

规则

  • 方法名称必须相同
  • 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
  • 方法的返回值类型可以相同也可以不同
  • 仅仅返回类型不同不足以成为方法的重载

实现理论

方法名成相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错

package com.kuang.method;/*** @version:java version 1.8* @Author:Mr Cao* @Description:* @Date:2024-01-31 1:32*/
public class Demo02 {public static void main(String[] args) {int max=max(10,10);System.out.println(max);}//比大小public static double max(double num1,double num2){double result=0;if(num1==num2){System.out.println("num1==num2");return 0;//终止方法}if(num1>num2){result = num1;}else{result=num2;}return result;}//方法重载public static int max(int num1,int num2){int result=0;if(num1==num2){System.out.println("num1==num2");return 0;//终止方法}if(num1>num2){result = num1;}else{result=num2;}return result;}
}

命令行传参

  • 有时候你希望运行一个程序的时候在传递给他消息,这要靠传递命令行参数给main()函数实现
package com.kuang.method;/*** @version:java version 1.8* @Author:Mr Cao* @Description:* @Date:2024-01-31 1:53*/
public class Demo03 {public static void main(String[] args) {//args.length 数组长度for (int i=0;i<args.length;i++){System.out.println("args["+i+"]:="+args[i]);}}
}
F:\Code\Java\JavaSE\JavaSE\JiChuYuFa\src\com\kuang\method>javac -encoding UTF-8  Demo03.java
F:\Code\Java\JavaSE\JavaSE\JiChuYuFa\src>java com.kuang.method.Demo03 this is kaungshen

在这里插入图片描述

可变参数

可变参数也叫不定向参数

  • JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。
  • 在方法声明,在指定参数类型后加一个省略号(…)
  • 一个方法中只能指定一个可变参数,他必须是方法的最后一个参数,任何普通的参数必须在它之前声明。
package com.kuang.method;/*** @version:java version 1.8* @Author:Mr Cao* @Description:* @Date:2024-01-31 2:03*/
public class Demo04 {public static void main(String[] args) {Demo04 demo04 = new Demo04();demo04.test(1,2,3,4,5);printMax(34,3,3,2,56.5);printMax(new double[]{1,2,3});}//本质就是数组public void test(int... i){System.out.println(i[0]);System.out.println(i[1]);System.out.println(i[2]);System.out.println(i[3]);System.out.println(i[4]);}public static void printMax(double... numbers){if(numbers.length==0){System.out.println("No argument passed");return;}double result = numbers[0];//排序for(int i=1;i<numbers.length;i++){if(numbers[i]>result){result = numbers[i];}}System.out.println("The max value is "+result);}
}

递归

概念

A方法调用A方法,即自己调用自己

  • 利用递归可以用简单的程序来解决一些复杂的问题,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大较少了程序的代码量,递归的能力在于用有限的语句来定义对象的无限集合。
  • 递归结构包括两个部分
    • 递归头:什么时候不调用自身方法,如果没有头,将陷入死循环
    • 递归体:什么时候需要调用自身方法。
package com.kuang.method;/*** @version:java version 1.8* @Author:Mr Cao* @Description:* @Date:2024-01-31 2:23*/
public class Demo06 {
//递归思想public static void main(String[] args) {System.out.println(f(5));}//2! 2*1//3! 3*2*1//5! 5*4*3*2*1//1!1public static int f(int n){if(n==1) {return 1;}else{return n*f(n-1);}}
}

在这里插入图片描述

相关文章:

  • 基于Spring Boot + Vue的信息化在线教学平台
  • 爬虫学习笔记-requests爬取NBA得分榜
  • 2023年甘肃省职业院校技能大赛高职组“信息安全管理与评估”(赛项样卷A)
  • 计算机基础专升本笔记-汇总笔记(一)常考特征、特性、属性
  • Spring基础——方法注入(Method Injection)
  • Qt如何将视频获取单帧
  • java实现pdf转word
  • Java基础知识点
  • MySQL 备份方案
  • EasyRecovery16电脑硬盘数据恢复软件功能详解
  • umi4 项目使用 keepalive 缓存页面(umi-plugin-keep-alive、react-activation)
  • 力扣hot100:560.和为K的子数组(前缀和+哈希表)
  • 基于Mindspore,通过Resnet50迁移学习实现猫十二分类
  • 【C++】类的默认成员函数(上)
  • 【S32DS报错】-8-调用初始化函数Port_Init后,S32DS断开与调试器PEmicro/J-Link的连接,无法调试Debug(基于MCAL)
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 30秒的PHP代码片段(1)数组 - Array
  • Consul Config 使用Git做版本控制的实现
  • JS基础之数据类型、对象、原型、原型链、继承
  • node.js
  • PV统计优化设计
  • Python爬虫--- 1.3 BS4库的解析器
  • Redis在Web项目中的应用与实践
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • vuex 笔记整理
  • 安装python包到指定虚拟环境
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 多线程事务回滚
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于web的全景—— Pannellum小试
  • 前端路由实现-history
  • 如何胜任知名企业的商业数据分析师?
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​io --- 处理流的核心工具​
  • ​LeetCode解法汇总518. 零钱兑换 II
  • # C++之functional库用法整理
  • #13 yum、编译安装与sed命令的使用
  • #if 1...#endif
  • #Z0458. 树的中心2
  • #传输# #传输数据判断#
  • #每日一题合集#牛客JZ23-JZ33
  • (07)Hive——窗口函数详解
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (剑指Offer)面试题34:丑数
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转) ns2/nam与nam实现相关的文件
  • (转)mysql使用Navicat 导出和导入数据库
  • *1 计算机基础和操作系统基础及几大协议
  • .Mobi域名介绍
  • .NET 5种线程安全集合
  • .NET 8.0 中有哪些新的变化?