从零开始学java - 第十三天

959 阅读3分钟

这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战

今天继续~

枚举

  • 一般用来表示一组常量,比如1年4个季节
  • 使用关键字enum定义
enum Game{
    CSGO,LOL
}

内部类中使用枚举

public class Test{
    enum Game{
        CSGO,LOL
    }
    public static void main(String[] args){
        Game g1 = Game.CSGO;
        System.out.println(g1);// 输出CSGO
    }
}

ps:可以把枚举相应的理解为键值对相同的列表

迭代枚举元素

enum Game{
    CSGO,LOL
}
public class Test{
    public static void main(String[] args){
        for(Game games : Game.values()){
            System.out.println(games);
        }
    }
}

ps:values()可以获取所有值,通过java加强for循环来循环获取的值并把他们输出

在 switch 中使用枚举类

enum Game{
    CSGO,LOL
}
public class Test{
    public static void main(String[] args){
        Game g1 = Game.CSGO;
        switch(g1){
            case CSGO:
                System.out.println("反恐精英");
                break;
            case LOL:
                System.out.println("英雄联盟");
                break;
        }
    }
}

ps:枚举实例化所获取的值即单个值本身,可直接用在switch里进行匹配

values(), ordinal()valueOf() 方法

values() - 返回枚举中的所有值

ordinal() - 返回枚举中的所有索引

valueOf() - 返回指定字符串的枚举常量

enum Game{
    CSGO,LOL
}
public class Test{
    public static void main(String[] args){
        Game[] arr = Game.values();
        
        for(Game gow : arr){
            System.out.println(gow);// 值
            System.out.println(gow.ordinal());// 索引
        } 
        System.out.println(Game.valueOf("LOL"));
    }
}

枚举类

  • 枚举可以拥有自己的变量,方法,构造函数
  • 枚举的构造函数必须是private
  • 如果枚举类里面有抽象方法的话,它的实例必须实现它
enum Game{
    CSGO,LOL;
    
    private Game()
    {
        System.out.println("the game is start");
    }
    public void GameMode()
    {
        System.out.println("wa ha ha");
    }
}

  • 用于区别命名空间
  • 把功能相关的类或接口放在一个包里方便应用
  • 通过package关键字定义,要写在最前面 比如一个路径为code/java/hello.java的包定义应该为:
package code.java
public class hello{
}

java自带的包

java.lang - 打包基础的类

java.io - 包含输入输出功能的函数

创建包

写出两个相同包的文件:

package game;

interface Game{
    public void watch();
    public void play();
}
package game;
public class Computer implements Game{
    public void watch(){
        System.out.println("i watching you");
    }
    public void play(){
        System.out.println("i want play");
    }
    public static void main(String[] args){
        Computer cm = new Computer();
        cm.watch();
        cm.play();
    }
    
}

然后去编译他们,通过mkdir来创建包:

mkdir game
cp Game.class Computer.class game
java game/Computer
Computer watch
Computer play

import 关键字

  • 使用import关键字可以导入想要用的包
import 包名.*

ps:*代表导入这个包中的所有东西,可以把*替换成相应的类名来引入相应的类

package 的目录结构

类放在包中会有两种情况:

  • 包名成为类名的一部分
  • 包名必须与目录结构吻合

Java 数据结构

枚举

  • 枚举接口定义了一种从数据结构中取回连续元素的方式

位集合

  • 位集合类实现了一组可以单独设置和清除的位或标志
  • 在设置和清除布尔值的时候非常有用

向量

  • 向量和传统数组十分类似,但是向量可以动态变化

  • 可以想象成一个开口容器,先进后出

字典

  • 它是一个键值对的集合
  • 它是一个抽象类

哈希表

  • 是一种用户定义键结构的基础上来组织数据的手段

属性

  • 属性列表中每一个键对应的值都是一个字符串 今天就学到这里,晚安~