如果想观看更多Java内容 可上我的个人主页关注我,地址子逸爱编程-CSDN博客https://blog.csdn.net/a15766649633?spm=1000.2115.3001.5343
使用工具 IntelliJ IDEA Community Edition 2023.1.4
使用语言 Java8
代码能力快速提升小方法,看完代码自己敲一遍,十分有用
目录
1.Java API介绍
Java API(Java Application Programming Interface)即Java应用程序编程接口,它是运行库的集合,预先定义了一些接口和类,程序员可以直接使用这些已经被打包的接口和类开发具体的应用来节约大量的时间和精力。API除了有"应用编程接口"的意思,还特指API的说明文档,也被称为API帮助文档。
1.1 Java语言的强大之处
Java语言的强大之处在于提供了多种多样的类库,从而大大提高了程序的编程效率和质量。
1.2 Java API常用的包
java.lang
编写java程序时使用最广泛的包,自动导入所有的程序中,包含了Java程序的基础类和接口。包装类、String类等常用的类都被包含在此包中。java.lang包还提供了用于管理类的动态加载、外部进程创建、主机环境查询和安全策略实施等系统操作的类。
java.util
包含了系统辅助类,特别是Collection、List和Map等集合类。
java.time
包含了对日期时间进行处理的类,如创建日期对象、格式化日期等。
java.io
包含了对输入/输出有关的类,如文件操作等类。
java.net
包含了与网络有关的类,如Socket、ServerSocket等类。
java.sql
包含了与数据库相关的类,如Connection、Statement等类。
本总章节主要学习java.lang、java.util、java.time三个包中的常用类。
2.枚举
2.1 枚举概述
在之前的内容中学习了Java有两种方式定义新类型:类和接口。对于开发大部分的情况来说,这两种方式已经足够了,但是在一些特殊情况下,这些方式就不适合了。例如,定义果树的生长状态,包括"生长期""采摘期""已死亡",需要定义一个Contants类,在其中定义三个静态常量分别记录三种状态。
但如果遇到以下需求,还需继续完善,进行烦琐的处理。
- 需要为每个常量分配一个整型值,以便向数据库中录入数据。
在实际开发中,状态值以整型数据形式存储到数据库中效率更高,在程序中执行状态判断时使用整型效率更高。例如,生长期——0,采摘期——1,已死亡——2。
- 如果还是使用静态常量来定义的话,非常容易出错,例如,整型的常量值出现重复,编译器也不会给出任何提示。
- 如果需要更强大的数据展示和处理功能,则需要自行编写。
- 例如,遍历所有的果树生长状态信息,或者需要自动获取果树状态的个数等。
- 自从Java1.5引入了枚举类型,这些问题得以解决。
2.1.1 枚举的语法
在枚举中可以定义多个常量,表示不同的枚举值,即枚举元素,之间用逗号隔开;
在枚举中可以定义其他成员,包括构造方法等,置于枚举常量之后;
可以使用"枚举名.常量名"的形式取出枚举中的指定内容;
访问修饰符 enum 枚举名{
常量1[,常量2...[;]]
//[其他成员]
}
2.1.2 枚举值遍历
使用枚举类型的values()方法可以实现对枚举值的遍历操作,可以看以下示例来进行剖析理解:
2.1.3 枚举基础贯穿案例
枚举类型
public enum Week {
MON,TUE,WED,THU,FRI,SAT,SUN;
}
运行类代码
/**
* 日程安排运行类
*/
public class WeekTest {
/**
* 查看日程安排方法
* @param day 星期几
*/
public void doWhat(Week day){
switch (day){
case MON:
case TUE:
case WED:
case THU:
case FRI:
System.out.println("工作日,努力写代码!");
break;
case SAT:
System.out.println("星期六,休息!看电影");
break;
case SUN:
System.out.println("星期日,休息!打篮球!");
break;
default:
System.out.println("地球上一个星期就7天。");
}
}
public static void main(String[] args) {
WeekTest weekTest=new WeekTest();
System.out.println("foreach遍历枚举元素");
for (Week day:Week.values()){
weekTest.doWhat(day);//doWhat(Week day)方法里面是用来判断枚举类型然后打印内容的
}
}
}
运行结果
- 以上的代码中,枚举类型Week可存储表示一周七天的枚举常量,使用"Week.THU"可输出表示星期四的枚举值。switch结构传入的变量day是Week类型,即枚举类型;case关键字后的常量要与之匹配,必须是Week中定义的枚举常量。
- 在以上代码中,Week.values()方法表示取得枚举中全部内容,返回一个对象数组,这是枚举本身支持的一个方法。除此之外,关于Enum类的其他用法,此处不深入讲解,以后用到时可自行查看API帮助文档。
2.1.4 使用枚举时注意
- 在switch结构中可以使用枚举类型作为判断变量,此时需注意,case关键字后一定不能在枚举值前加枚举类型名,如Week.THU,否则会出现编译错误。
- enum关键字表示的是java.lang.Enum类型,即使用enum声明的枚举类型,就相当于定义一个类,此类默认继承java.lang.Enum类,因此可使用其中定义的所有方法。此处不再深入讲解,以后用到时可自行查看API帮助文档。
2.2 枚举的方法
每一个枚举类型成员都可被看作Enum对象。所有枚举实例都可以调用Enum类的方法,实现枚举的遍历、比较等操作,枚举的常用方法如下:
2.2.1 枚举的常用方法
T[] values
以数组形式返回枚举类型的所有成员;
T valueOf()
将普通字符串转换为枚举实例;
int compareTo()
- 比较两个枚举成员在定义时的顺序,结果为负整数。零或正整数,表示当前对象小于、等于或大于指定对象;
- 比较同一枚举常量的序数差,如果相同就返回0,如果在方法后面的参数之前就返回负数,在方法后面的参数之后就返回正数;
int ordinal()
获取枚举成员的索引位置 ;
2.2.2 使用枚举方法贯穿案例
枚举类型
public enum Week {
MON,TUE,WED,THU,FRI,SAT,SUN;
}
运行类代码
/**
* 日程安排运行类
*/
public class WeekTest {
/**
* 查看日程安排方法
* @param day 星期几
*/
public void doWhat(Week day){
switch (day){
case MON:
case TUE:
case WED:
case THU:
case FRI:
System.out.println("工作日,努力写代码!");
break;
case SAT:
System.out.println("星期六,休息!看电影");
break;
case SUN:
System.out.println("星期日,休息!打篮球!");
break;
default:
System.out.println("地球上一个星期就7天。");
}
}
public static void main(String[] args) {
WeekTest weekTest=new WeekTest();
System.out.println("foreach遍历枚举元素");
for (Week day:Week.values()){
weekTest.doWhat(day);//doWhat(Week day)方法里面是用来判断枚举类型然后打印内容的
}
// for (int i = 0; i < Week.values().length; i++) {
// weekTest.doWhat(Week.values()[i]);
// }
System.out.println("\n获取枚举的个数");
System.out.println("一周有"+Week.values().length+"天.");
System.out.println("\n使用索引遍历枚举元素");
for (int i = 0; i < Week.values().length; i++) {
System.out.println("索引"+Week.values()[i].ordinal()+",值"+Week.values()[i]);
}
System.out.println("\n枚举元素比较");
System.out.println(Week.valueOf("MON").equals(Week.MON));
System.out.println(Week.MON.compareTo(Week.TUE));
System.out.println(Week.FRI.compareTo(Week.TUE));
// weekTest.doWhat(Week.MON);
// Week sat= Week.SAT;
// weekTest.doWhat(sat);
}
}
}
运行结果
2.3 使用枚举的好处
在这些实例中,可以看出,枚举具有类似数组的特征,每个枚举元素都默认有一个对应的索引值,表示枚举元素的位置,初始值从0开始,能够通过索引访问枚举元素。同时,通过调用枚举类中的方法可以实现更多样化的数据操作,大大提高了编码效率,避免错误发生,简化代码。
小结(使用枚举好处如下):
1.枚举可以使代码更易于维护,有助于确保为变量指定合法的、期望的值。
2.使用枚举赋值,只需输入枚举名和".",就可以显示所有枚举值。
3.枚举使代码更加清晰,允许用描述性的名称表示数据,使用时直观方便。