一、方法重载

1.又被称为overload

2.方法重载使用场景

功能类似的时候,尽可能仍方法名相同(但是功能不同或者不相似的时候,方法名尽量不同)

3.什么条件满足之后,可以构成方法重载

(1)在同一类中;(2)方法名不同;(3)参数列表不同:i.数量不同;ii.顺序不同;iii.类型不同

4.方法重载和什么有关系,和什么没有关系?

(1)方法重载和方法名+参数列表无关

(2)方法重载和返回值类型无关


package code_class_file;

public class D30_overload {

  public static void main(String[] args) {

      m1();

      m4(2,4);

      m5();

  }

  //以下两个方法构成重载(数量不同)

  public static void m1() {}

  public static void m1(int a) {}

  //以下两种方式构成重载(顺序不同)

  public static void m2(int a,double b) {}

  public static void m2(double a,int b) {}

  //以下两种方式构成方法重载(类型不同)

  public static void m3(int x) {}

  public static void m3(double x) {}

  //以下方法编译错误,不属于方法重载,属于方法重复

  //public static void m4(int a,int b){}

  //public static void m4(int b,int a){}

  //以下方法编译错误,不属于方法重载,属于方法错误

  //void m5(){}

  //public static void m5(){}

​

}

​

5.方法重载的具体应用

简写打印操作

  public static void main(String[] args) {

    //简写打印操作

    p("jfshafo");

  }

  public static void p(byte a) {

    System.out.print(a);

  }

  public static void p(short a) {

    System.out.print(a);

  }

  public static void p(char a) {

    System.out.print(a);

  }

  public static void p(int a) {

    System.out.print(a);

  }

  public static void p(long a) {

    System.out.print(a);

  }

  public static void p(float a) {

    System.out.print(a);

  }

  public static void p(double a) {

    System.out.print(a);

  }

  public static void p(boolean a) {

    System.out.print(a);

  }

  public static void p(String a) {

    System.out.print(a);

  }

  public static void p(String[] a) {

    System.out.print(a);

  }

二、方法递归

1.方法递归定义

答:方法调用自身调用自身,称为递归

例子:

a(){

  a();

}

2.递归是很耗费栈内存的,能不用就不用了

以下程序发生了这样的一个错误(不是异常,是错误),错误发生的时候无法挽回,只有一个结果,那就是JVM停止工作


    public static void main(String[] args) {

    dosome();

  }

  public static dosome() {

    p("dosome开始");

    dosome();

    p("dosome结束");       

  }

3.递归必须有结束条件,没有结束条件会导致栈内存溢出

4.有些情况下该功能的实现必须借助递归,例如:目录拷贝

5.​例子:用递归写一个计算1​~N的整数求和

  public static void main(String[] args) {

  int N=9;

  int resultSum = sum(N);

  System.out.println(resultSum);

  }

  public static int sum(int a) {

    if (a > 1) {

      return a+sum(a-1);

    }else {

    return 1;

    }

  }

三、源码:

D30_overload_and_recursion.java

地址:

https://github.com/ruigege66/Java/blob/master/D30_overload_and_recursion.java

2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载30-方法重载、方法递归的更多相关文章

  1. Java 方法重载 方法重写

    方法重载规则 参数个数不同 参数个数相同,但参数列表中对应的某个参数的类型不一样 方法的返回类型和参数名称不参与重载 "编译期绑定",,因为未产生对象,只看参数.引用类型绑定方法 ...

  2. JAVA构造方法与方法是啥意思,方法重载方法覆盖俗谈

    构造函数跟构造方法是一样的,只是称呼不同; C语言里叫函数,Java里叫方法. 成员方法必须有返回类型即使是没有返回,也要写上void 构造方法没有返回类型,而且和类名一样!一个类里面,一看就知道了譬 ...

  3. C# Webservice中如何实现方法重载--(方法名同名时出现的问题)

    本文摘抄自:http://blog.sina.com.cn/s/blog_53b720bb0100voh3.html 1.Webservice中的方法重载问题(1)在要重载的WebMethod上打个M ...

  4. Java基础03 构造器与方法重载

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在方法与数据成员中,我们提到,Java中的对象在创建的时候会初始化(initial ...

  5. 要想学好Java编程,构造器、方法重载、this关键字、垃圾回收机制,这4关一定要过!

    有人说,你应该关注时事.财经,甚至流行的电影.电视剧,才有可能趁着热点写出爆文:有人说,你别再写“无聊”的技术文了,因为程序员的圈子真的很小,即便是像鸿洋那样的招牌大牛,文章是那么的干货,浏览量有多少 ...

  6. java方法——重载2

    什么是Java方法重载 方法重载的定义 1 对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数.类型.顺序至少有一个不一样,这时候局构成方法重载. END 方法重载示例 1 pu ...

  7. Java 方法重载和多态

    先来看看什么是方法重载? 方法重载的要求是:方法名相同,参数列表不同(不同的参数类型或者参数顺序或者参数个数).至于方法的其他部分,如方法返回值类型和修饰符,与方法重载没有任何关系.最好加上@Over ...

  8. Java基础03 构造器与方法重载(转载)

    显式初始化要求我们在写程序时就确定初始值,这有时很不方便.我们可以使用构造器(constructor)来初始化对象.构造器可以初始化数据成员,还可以规定特定的操作.这些操作会在创建对象时自动执行. 定 ...

  9. Java笔记 —— 方法重载和方法重写

    Java笔记 -- 方法重载和方法重写 h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: red ...

随机推荐

  1. 安利一个免费下载VIP文档神器

    今天安利给大伙一个非非非常好用的可以免费下载VIP文档的下载神器------冰点文库下载器,用过的人都说好.操作简单,小巧轻便,完全免费.支持百度.豆丁.畅享.mbalib.hp009.max.boo ...

  2. Linux 精确判断是否同一文件--及终端获取字符串md5 的值

    背景 今天发现一个同事用 文件大小 对比,来判断编译所得的一个可执行文件是不是同一个文件. 讲道理 这种方式出错的概率很低,但是用这样的方法,一旦出错就容易被坑一把狠的. 所以我来分享一下 md5 在 ...

  3. Python机器学习之数据探索可视化库yellowbrick-tutorial

    背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维.陆续使用过plotly ...

  4. [SCOI2007]压缩(动态规划,区间dp,字符串哈希)

    [SCOI2007]压缩 状态:设\(dp[i][j]\)表示前i个字符,最后一个\(M\)放置在\(j\)位置之后的最短字串长度. 转移有三类,用刷表法来实现. 第一种是直接往压缩串后面填字符,这样 ...

  5. net core 3.0 之Grpc新特性小试牛刀

      相信微服务大家伙都有听说和知道,好处弊端咱也不多说了,Grpc算是一个比较全面的微服务框架,也得到微软的支持 总结下来就是,跨平台,可靠,通信快,扩展性强,网络消耗小,模板多语言通用 光说好处,没 ...

  6. Nginx服务部署

    1 企业常用网站服务 处理静态资源:nginx.apache.Lighttpd处理动态资源:tomcat(java语言编写).php(php语言编写).python(python语言编写)nginx网 ...

  7. 打包Electron项目

    先确保该项目正常运行npm run dev,结束程序, 上篇的项目运行已经提到了打包输出工具electron-packager 可以使用全局安装的方式: npm install -g electron ...

  8. vue-小爱ADMIN系列文章(二):微信微博等分享,国际化,前端性能优化,nginx服务器部署

    最近在做我的小爱ADMIN后台管理系统,结合当前市场后台管理系统对相关功能的需求,我又开始新增了一些新的功能和组件,如分享功能组件,项目国际化功能:项目完成后,部署在nginx服务器,发现首次访问的速 ...

  9. 简单使用AspectJ

    AspectJ是一个AOP框架,由于SpringAOP的配置过于繁琐,因此使用了AspectJ依赖注解开发 1.Aspecj依赖坐标,此处省略了Spring相关依赖 <dependency> ...

  10. Mybatis与SQL Server类型转换遇到的坑

    一. MyBatis SQL语句遇到的性能问题 1. 场景还原 假设我们有一张User表,其中包含userId.userName.gender字段,其中userId的数据类型为char(20),此时我 ...