JAVA零基础学习之路(二十九)

枚举

JDK1.5引入了枚举类型枚举类型的定义包括枚举声明和枚举体。格式如下:

enum 枚举名{
    枚举体(常量列表)
}

枚举体就是放置一些常量。我们可以写出我们的第一个枚举类型,如示例所示:

【例】创建枚举类型

enum Season{
    SPRING, SUMMER, AUTUMN, WINDER
}

所有的枚举类型隐性地继承自java.lang.Enum。枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final修饰的。可以直接通过枚举类型名使用它们。

注意:

  • 当你需要定义一组常量时,可以使用枚举类型。
  • 尽量不要使用枚举的高级特性,事实上高级特性都可以使用普通类来实现,没有必要引入枚举,增加程序的复杂性!

【示例】枚举的使用

import java.util.Random;
public class TestEnum {
    public static void main(String[] args){
        for(Season s:Season.values()){
            System.out.println(s);
        }
        int a=new Random().nextInt(bound:4);//生成0,1,2,3随机数
        switch (Season.values()[a]){
            case SPRING:
                System.out.println("春天");
                break;
            case SUMMER:
                System.out.println("夏天");
                break;
            case AUTUMN:
                System.out.println("秋天");
                break;
            case WINTER:
                System.out.println("冬天");
                break;
        }
    }
}
enum Season{
    SPRING,SUMMER,AUTUMN,WINTER
}
class Jijie {
    public static final int SPRING = 0;
    public static final int SUMMER = 1; 
    public static final int AUTUMN = 2;
    public static final int WINTER = 3;
}

递归遍历目录结构和树状展现

1.递归是一种常见的算法思路,在很多算法中都会用到。比如:深度优先搜索(DFS:Depth First Search)等。

2.递归的基本思想就是“自己调用自己”。

递归结构包括两个部分:

  • 定义递归头。解决:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
  • 递归体。解决:什么时候需要调用自身方法。

【示例】使用递归求n!

public class Test22 {
    public static void main(String[] args) {
        long d1 = System.currentTimeMillis();
        factorial(10);
        long d2 = System.currentTimeMillis();
        System.outprintf("递归费时:"+(d2-d1));//耗时:32ms
    }
    /**求阶乘的方法*/
    static long factorial(int n){
        if(n==1){//递归头
            return 1;
        }else{//递归体
            return n*factorial(n-1);//n! = n * (n-1)!
        }
    }
}

执行结果:

10阶乘的结果:3628800
递归费时:558

递归的缺陷

算法简单是递归的优点之一,但是递归调用会占用大量的系统堆栈,内存耗用多在递归调用层次多时速度要比循环慢的多,所以在使用递归时要慎重。

分享一个全面学习JAVA的视频教程

以上就是小编为大家整理的关于JAVA的知识。

后续持续更新,还望诸君多多学习,早日上岸!

需要学习具体教程的可以关注私信我哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值