1.枚举
1.1枚举概述
枚举是一组固定的常量组成的类型,在Java中每一个都继承Java.lang.Enum类,使用关键字enum定义
枚举语法:
访问修饰符 enum 枚举类{
常量1,常量2,…
//其他成员
}
在枚举中开可以定义多个常量,表示不同的枚举值,之间用逗号隔开。
在枚举中可以定义其他成员,包括构造方法等,置于枚举常量之后。
可以使用“枚举类.常量名”的形式取出枚举中的指定内容。
下面代码定义了性别的枚举,两个枚举常量代表“男”和“女”
public enum Genders{
Male,Female;
}
1.2枚举方法
T values()
以数组的形式返回枚举类型的所有成员
代码示例在下面for循环
int ordinal()
获取枚举成员的索引位置
代码示例在下面for循环
enum Week{
MON,TUE,WED,FNH,FRI,SAT,SUN //定义一个枚举,包括七个常量,表示一周七天
}
public class Hebdomad {
public static void main(String[] args) {
for (int i = 0; i < Week.values().length; i++) {
System.out.println("索引"+Week.values()[i].ordinal()+",值:"+Week.values()[i]);
}
}
}
T valueOf()
将普通字符串转换为枚举实例
System.out.println(Week.valueOf("MON"));
int compareTo()
比较两个枚举成员在定义的顺序,结果为负整数或者正整数,零,表示当前对象小于,等于或者大于指定对象
System.out.println(Week.FRI.compareTo(Week.TUE));//FRI是第5个定义的值,TUE是第2个定义的值;5-2=3,所以结果是3
1.3 枚举的好处
枚举可以使代码更易于维护,有助于确保为变量指定合法的,期望的值
使用枚举赋值,只需输入枚举名和“ . ”,就可以显示所以枚举值
枚举使代码更加清晰,允许用描述性的名称表示数据,使用时直观方便
2. 包装类
2.1包装类概述
包装类是指将基本数据类型封装到一个类中,也就是将基本类型包装成一个类型。java程序设计语言为每一种基本类型都提供了一个包装类,这些包都在java.lang包中,
所有数字类型包都继承Number类,Number类是一个抽象类
包装类包含每种基本数据类型的相关属性,如最大值,最小值,以及相关的操作方法
2.2 包装类和基本数据类型的转换
在java中,基本数据类型创建包装类对象通常可以采用下面两种方法
public Type(type value)//Type表示包装类,参数type为基本参数类型
public Type(String value)
针对每一个包装类,都可以使用关键字new将一个基本数据类型包装为一个对象,示例:
Integer intValue= new Integer(21);
Integer intValue= new Integer("21");
2.3包装类转换为基本数据类型
包装类转换为基本数据类型通常采用如下方法:
public type typeValue();//type指的是基本数据类型
2.4装箱拆箱
自动装箱:把基本数据类型变量直接转换为对应的包装类对象,或者转换为Object
自动拆箱:与装箱相反,将包装类对象转换成对应的基本类型变量
装箱拆箱示例:
//基本数据类型变量转换为包装类(装箱)
Integer inObj=5;
Object boolObj=true;
System.out.println(inObj+","+boolObj);
//包装类转换为基本数据类型(拆箱)
int it=inObj;
System.out.println(it);
boolean b=(Boolean) boolObj;
System.out.println(b);
3.日期类
3.1创建日期对象
日期和时间的类都在java.time包中,这些类都是不可以变的,线程安全的,下面是一些常用类
LocalDate:表示日期(年/月/日)
LocalTime:表示时间(时/分/秒/毫秒)
LocalDateTime:表示日期和时间(年/月/日/时/分/秒/毫秒)
3.2常用方法
日期类 now()//静态方法,根据当前时间创建对象,返回日期对象
LocalDate dateTime= LocalDate.now();
日期类 of(int year,Month month,int dayOfMonth)//静态方法,根据指定日期/时间创建日期对象,如LocalDate,of(2021,Month,APRIL,4)
LocalDate date = LocalDate.of(2021, Month.APRIL, 4);
System.out.println("指定日期为:" + date);
Mointh getMonth()//获取月份,返回Month,是一个表示月份的枚举
LocalDate currentDate = LocalDate.now();
Month month = currentDate.getMonth();
System.out.println("当前的月份为:" + month);
int getDayOfMonth()//返回当前日期类对象的月份天数
Calendar calendar = Calendar.getInstance();
int dayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("当前月份的天数为:" + dayOfMonth);
int getYeat()//返回当前日期类对象的年份
LocalDate currentDate = LocalDate.now();
int year = currentDate.getYear();
System.out.println("当前的年份为:" + year);
3.3日期格式化
示例:
LocalDate dateTime= LocalDate.now();
DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyy年mm月份dd日期");
//两种格式化方式
String str1=dateTime.format(formatter);
String str2=formatter.format(dateTime);
4.Random类
4.1Random构造方法
Random()//创建一个随机数生成器
Random(long seed)//使用单个long种子创建一个随机数生成器
Random类定义了很多用于获取随机数的方法,最常用的是nextInt()方法,它返回下一个int类型的伪随机数,如下有两个重载方法
int nextInt();//返回下一个伪随机数,它是此随机数生成器序列中均匀分布的int值
int nestInt(int n);//返回下一个伪随机数,它是取自此随机数生成器序列的,在0(包括)和指定值n(不包括)之间均匀分布的int值
扩展:Random类还定义了得到long型,Boolean型,float型等伪随机数的方法,可以在API查看