首页 > 其他分享 >学习记录8方法的重载、可变参数、递归

学习记录8方法的重载、可变参数、递归

时间:2022-09-25 12:01:46浏览次数:46  
标签:... 递归 int test 参数 可变 重载 方法

方法的重载

  • 重载就是在一个类中,又想同的函数名称,但形参不同的函数
    即,一个类中有两个同名的方法,但这两个类的“返回值类型”、“形参类型”、“形参个数”不同,而在程序中调用哪一个方法,取决于实参个数、实参类型与被赋值的变量的类型

  • 方法的重载的规则:

    • 方法名称必须相同(否则就是不一样的方法)
    • 参数列表必须不相同(个数、或类型、或参数)
    • 返回值类型可以相同也可以不相同
    • 仅仅返回类型不同不足以成为方法的承载
  • 实现理论:
    方法名相同时,编译器会根据调用方法的参数个数、参数类型等去诸葛匹配,以选择对应的方法,如果匹配失败,则编译器报错

  • 可变参数(不定项参数):

    • java支持传递同类型的可变参数给同一个方法
    • 在声明方法时,在指定参数类型后加一个省略号“...”
    • 在一个方法中只能指定一个可变参数,它必须是方法中最后一个被声明的参数,任何普通参数的声明必须在他之前,如:
      public void test(int... i)或者public void test(int j, int s, int... i),public void test(int... i,int j)这样就是错误形式
      public void test(int... i),声明过后,在调用函数时,对i的赋值就可以是多个值,并且,传递的参数必须都是同一个类型

such as:

public class Student{
    Student Stu = new Student();//定义一个对象
    Stu.test(i:1,2,3,4,5);
}
public void test(int... i){//方法test
    System.out.println(i);//系统输出i的名称
    System.out.println(i[0]);//所有赋给i的值里排序第一的值
    System.out.println(i[1]);//所有赋给i的值里排序第二的值
    System.out.println(i[2]);//所有赋给i的值里排序第三的值
    System.out.println(i[3]);//所有赋给i的值里排序第四的值
    System.out.println(i[4]);//所有赋给i的值里排序第五的值,这样的表现形式,其实就是数组的特征
}

调用方法:

  • printMax(number:1,2,3,4,5);
  • printMax(new double[]{1,2,3,4,5});

递归

方法调用其本身,即方法A调用方法A,这与调用函数一样,需要申请空间,大规模数据时会出现溢栈的情况,但同时,利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归结构包括两个部分:

  • 递归头:什么时候停止调用自己。如果没有头,将陷入死循环
  • 递归体:什么时候需要调用自己

    (小计算使用递归,对电脑内存占用太多,100的阶乘就会使电脑奔溃
    计算器)

标签:...,递归,int,test,参数,可变,重载,方法
From: https://www.cnblogs.com/hezhipeng/p/16702420.html

相关文章

  • 尾递归与非尾递归(线性递归)
    1尾递归与非尾递归区别非尾递归(线性递归):当数量很大时,会造成栈溢出。因为每次递归调用时,递归函数中的参数,局部变量等都要保存在栈中。尾递归:return时只调用自身,不能有额......
  • 并发学习记录13:不可变
    问题的提出日期转换的问题在多线程的环境下做日期转换很可能出现线程安全问题:代码:@Slf4j(topic="ch.UnchangeTest01")publicclassUnchangeTest01{publicst......
  • C语言递归汉诺塔
    #include<stdio.h>intmain(){voidhanoi(intn,charone,chartwo,charthree);intm;printf("Inputthenumberofdiskes:");scanf("%d",&m);......
  • 函数递归
    CREATEDEFINER=`root`@`%`FUNCTION`queryParentAreaInfo`(areaIdINT)RETURNSvarchar(4000)CHARSETutf8mb4BEGINDECLAREsTempVARCHAR(4000);DECLAREsTempChd......
  • Vue组件递归渲染
    父级菜单  数据格式  子组件递归(直接使用name) ......
  • 递归、迷宫问题
    简介递归需遵守的规则应用实例代码实现publicclassMiGong{ publicstaticvoidmain(String[]args){ //先创建一个二维数组,模拟迷宫 //地图......
  • 二叉树遍历(递归、迭代)
    前中后序遍历递归法//前序遍历varpreorderTraversal=function(root){letres=[];constdfs=function(root){  if(root===null)return;  //先序遍历所......
  • 可变长参数和数组的异同
    1,可变长参数和数组的异同   1.1相同:    都可以在方法中作为数组类型的参数   在方法中处理时都当作数组处理      1.2不相同:    ......
  • BM31对称二叉树(判断二叉树是否symmetric?)(递归)
    描述给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)例如:                 下面这棵二叉树是对称的下面这棵二叉树不对称。数据范围......
  • 关系运算符重载,以及在关系运算符重载发现的函数参数什么时候需要用引用
    在学习关系运算符重载的时候,看见重载函数中的函数参数使用的是引用类型,于是在思考为什么需要用引用,而不是非引用,例如:引用格式:booloperator==(Person&p)非引用格式:bool......