栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java】方法、重载、递归

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java】方法、重载、递归

文章目录
    • 方法
    • 方法的基本结构
        • return关键字
        • static关键字、修饰符
        • 方法的命名规则
        • 方法的设计原则
    • 方法的重载
        • 涉及基本类型的重载
    • 可变参数
    • 递归
        • 递归有两个部分
        • 递归函数实现阶乘计算

方法
  • Java中的方法其实和c的函数差不多,只是别称不同
  • Java中的方法只能作为类的一部分来创建
  • 代替繁琐重复的代码

.

.

.

方法的基本结构
[修饰符][返回值类型] [方法名](参数列表){
    //方法体
}

//例:
void my_print(String str){   //void表示空类型
    System.out.println(str);
}
  • 返回类型:描述在调用方法之后从方法返回的值
  • 参数列表:指定要传给方法什么样的信息
  • 修饰符:可选

.

.

return关键字
int add(int a,intb){
    c = a + b
    return c;
}

return有两点作用

  • 表示方法已做完,离开此方法,类似于break
  • 如果方法产生了一个值,则这个值放在return后面,用于方法调用完毕后,返回一个值

.

.

static关键字、修饰符
class StaticTest{
    static int i = 47
}
StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();
  • 上述中,st1.i和st2.i其实都是指向同一个存储空间 i=47
  • 通过static,即便没有创建对象,也可以调用这个方法
  • 通过static,表示这个方法或者域不和任何对象有关联
  • 通过static,可以通过类名去调用该方法或者是域,所以使用类名去调用static是更好的选择

一个static字段对每个类来说都只有一份存储空间,非static对于每个对象来说都有一个独自的存储空间

.

方法的命名规则

驼峰命名法

.

方法的设计原则

最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展

.

.

方法的重载

重载的方式是通过命名相同方法名的方法来实现重载

那系统怎么来区分这些相同方法名的方法呢?

  • 每个重载都需要一个独一无二的参数类型列表
  • 参数列表的顺序不同也算重载,但是并不建议这样做
涉及基本类型的重载

基本类型能从一个“较小”的类型自动提升至一个“较大”的类型,此过程一旦牵扯重载,可能会造成一些混淆。

  • 如果传入的数据类型(实际参数)小于方法中声明的形参的类型,实际参数就会被提升
void test(int a){
     System.out.println("Type Int");
}
void  test(long a){
     System.out.println("Type Long");
}
char x = 'x';
tree.test(x);

//输出结果
//Type Int
  • 如果传入的数据类型(实际参数)大于方法中声明的形参的类型,会报错

.

.

可变参数
  • 在方法声明中,在指定参数类型后加一个省略号(…)
  • 一个方法中只能指定一个可变参数,并且参数顺序来说,它必须是最后一个定义

例:

int add(int b;int... c){
    //方法体;
}

.

  • 上述代码中,c是以数组的形式存在

例:可以使用下标取值

public class Test {
    void add(int... numbsers){  //求最大值
        if(numbsers.length == 0){
            System.out.println("没有参数传入");
        }
        int result = numbsers[0];
        for(int i:numbsers){
            if(i > result){
                result = i;
            }
        }
        System.out.println(result);
    }
    public static void main(String[] args) {
        Test test = new Test();
        test.add(1,2,3,5,3,2,4);

    }
}

//输出结果
//5

.

.

递归

A方法调用B方法,我们很容易理解

递归函数:A方法调用A方法,也就是我调用我自己

递归有两个部分
  • 递归头:什么时候不调用自身。如果没有头,将陷入死循环
  • 递归体:什么时候调用自身方法
递归函数实现阶乘计算
public class Demo04 {
    //阶乘
    long factorial(long i){
        if(i == 1){     //递归头
            return i;
        }
        return i*factorial(i-1);   //递归体
    }
    
    public static void main(String[] args) {
        Demo04 demo04 = new Demo04();
        System.out.println(demo04.factorial(10));   
    }

}
//输出10!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/930413.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号