从零开始学java - 第十三天 枚举 包 Java 数据结

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

今天继续~

枚举

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

内部类中使用枚举

1
2
3
4
5
6
7
8
9
java复制代码public class Test{
enum Game{
CSGO,LOL
}
public static void main(String[] args){
Game g1 = Game.CSGO;
System.out.println(g1);// 输出CSGO
}
}

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

迭代枚举元素

1
2
3
4
5
6
7
8
9
10
java复制代码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 中使用枚举类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
java复制代码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() - 返回指定字符串的枚举常量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
java复制代码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
  • 如果枚举类里面有抽象方法的话,它的实例必须实现它
1
2
3
4
5
6
7
8
9
10
11
12
java复制代码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的包定义应该为:
1
2
3
java复制代码package code.java
public class hello{
}

java自带的包

java.lang - 打包基础的类

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

创建包

写出两个相同包的文件:

1
2
3
4
5
6
java复制代码package game;

interface Game{
public void watch();
public void play();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
java复制代码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来创建包:

1
2
3
4
5
powershell复制代码mkdir game
cp Game.class Computer.class game
java game/Computer
Computer watch
Computer play

import 关键字

  • 使用import关键字可以导入想要用的包
1
java复制代码import 包名.*

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

package 的目录结构

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

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

Java 数据结构

枚举

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

位集合

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

向量

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

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

字典

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

哈希表

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

属性

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

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%