一、方法重载

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. alluxio源码解析-rpc调用概述(1)

    alluxio中几种角色以及角色之间的rpc调用: 作为分布式架构的文件缓存系统,rpc调用必不可少 client作为客户端 master提供thrift rpc的服务,管理以下信息: block信息 ...

  2. 驰骋工作流引擎ccflow-流转自定义功能使用说明

    流转自定义功能使用说明 关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 节点跳转 节点流转自定义 应用背景: 有一些流程在运行过程中是 ...

  3. jenkins无法连接到git原因

    1.账号密码错误 2.公钥私钥不对应(git上为公钥,jenkins为私钥,私钥比公钥长) 3.公钥私钥文件没有复制到jenkins目录下的.ssh文件中

  4. File Compression and Archiving in linux (linux 中文件的归档)

    1. Compressing Files at the Shell Prompt Red Hat Enterprise Linux provides the bzip2, gzip, and zip ...

  5. ip地址、域名、DNS、URL的区别与联系

    IP:每个连接到Internet上的主机都会分配一个IP地址,此ip是该计算机在互联网上的逻辑地址的唯一标识,计算机之间的访问就是通过IP地址来进行的.写法:十进制的形式,用“.”分开,叫做“点分十进 ...

  6. 为什么要用Kubernetes?

    1.前言 第一次接触Kubernetes是在2016年,再一次浏览博文的时候,那是我第一次听到Kubernetes这个名词,也是第一次认识了k8s这么一个东西.后来在慢慢了解它的时候,被它天生高可用. ...

  7. C#之项目常用方法之静态扩展

    一般项目中我们经常用到数据Json的序列化与反序列化,为了方便在需要的地方快速使用,一般建议都封装为静态扩展方法,在需要的地方可直接使用. 而目前C#项目中序列化一般都是用的 Newtonsoft.J ...

  8. Java 从入门到进阶之路(四)

    之前的文章我们介绍了 Java 的运算符和表达式,本章我们来看一下 Java 的循环结构. 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性进行. 循环的 ...

  9. unity shader 纹理&透明效果

    1.纹理映射基础 (1)纹理映射通过(u,v)坐标实现.注意:这句话时博主当时面试一家外企被问到的问题. (2)添加纹理属性:——MainTex("Main Tex",2D)=&q ...

  10. Dictionary的用法及用途

    Dictionary<string, string>是一个泛型 他本身有集合的功能有时候可以把它看成数组 他的结构是这样的:Dictionary<[key], [value]> ...