枚举
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的知识。
后续持续更新,还望诸君多多学习,早日上岸!
需要学习具体教程的可以关注私信我哦!