JavaOOP 07 实用类(枚举、包装类、日期类、Random类)

七、实用类

7.1 Java API介绍

7.1.1 Java API 概述

  • API 的意思为 Java 应用程序编程接口
  • 还特指 API 的说明文档,也称API帮助文档
  • Java 语言的强大之处在于它提供了多种多样的类库,从而提高了编程效率和质量
  • Java API 提供常用的包如下
描述
java.lang编写Java程序时最广泛使用的包,自动导入所有的程序中,包含了Java程序的基础类和接口。包装类、String类等常用的类都包含在此包中,还提供了用于管理类的动态加载、外部进程创建、主机环境查询和安全策略实施等系统操作的类
java.util包含系统辅助类,特别是Collection、List和Map等集合类
java.time包含对日期时间进行处理的类,如创建日期对象,格式化日期等
java.io包含与输入/输出有关的类,如文件操作等类
java.net包含与网络有关的类,如Socket、ServerSocket等类
java.sql包含与数据库相关的类,如Connection、Statement等类

7.2 枚举

7.2.1 枚举概述

  • Java 枚举是一个特殊的类,一般表示一组常量
  • Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割
  • 定义枚举语法如下:
访问修饰符 enum 枚举名{
    常量1,常量2,常量3.....
}
  • 枚举中可以定义多个常量,表示不同的枚举值
  • 可以使用 “枚举名.常量名” 的形式取出枚举中的指定内容

7.2.2 枚举方法

  • 每一个枚举类型成员都可以调用 Enum 类的方法,实现枚举的遍历、比较等操作

  • 枚举的常用方法

方法
T[] values()以数组形式返回枚举类型的所有成员
T valueOf()将普通字符串转换为枚举实例
int compareTo()比较两个枚举成员在定义时的顺序,结果为负整数、零或正整数,表示当前对象小于、等于或大于指定对象
int ordinal()获取枚举成员的索引位置

7.2.3 枚举示例

定义一个枚举,包括七个枚举常量,表示一周中的七天,遍历枚举常量,并且实现查看每一周的日程安排

枚举类

public enum Week {
    //定义枚举常量
    MON,TUE,WED,THU,FRI,SAT,SUN;
}

运行类

public class WeekTest {
    //主方法
    public static void main(String[] args) {
        //创建对象
        WeekTest wt=new WeekTest();
        //遍历枚举
        System.out.println("每天日程安排为:");
        for (Week wk:Week.values()) {
           wt.doWhat(wk);
        }

    }
    /*
    * 定义方法,通过枚举常量查看日程安排
    * */
    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.2.4 枚举的优点

  • 可以使代码易于维护,有助于确保为变量指定合法的、期望的值
  • 使用枚举赋值,只需要输入 枚举名和 “.” ,就可以显示所有枚举值
  • 枚举使代码更加清晰,允许用描述性的数据,使用时更直观方便

7.3 包装类

7.3.1 包装类概念

  • 将基本数据类型封装到一个类中,即将基本类型包装成一个类类型
  • Java为每一种基本类型都提供了一个包装类,存于java.lang包中
  • 共有八个包装类,关系图如下

在这里插入图片描述

  • 所有的数字类型都继承了 Number 类,Number 类是一个抽象类
  • 包装类和基本数据类的对应关系
类型长度默认值包装类
byte8位0java.lang.Byte
short16位0java.lang.Short
int32位0java.lang.Integer
long64位0java.lang.Long
float32位0.0java.lang.Float
double64位0.0java.lang.Double
char16位\u0000~\uFFFFjava.lang.Character
boolean1位false、truejava.lang.Boolean

7.3.2 包装类和基本数据类型的转换

不同应用场景中,基本数据类型和包装类型间要进行相互转换以完成特定操作

1. 基本数据类型转为包装类

  • 使用关键字 new 将一个基本数据类型值包装为一个对象
  • 基本数据类型转为包装类语法 :
包装类对象 对象名=new 包装类对象(基本数据)
  • 例如,将 int 类型 转为 包装类 Integer 类型的包装类对象
Integer integer=new Integer(32)

2. 包装类转换为基本数据类型

  • 一般使用 基本数据类型Value 来转换,如 byteValue()、charValue()等
  • 包装类转换为基本数据类型 语法:
基本数据类型 变量名=对象名.基本数据类型Value();
  • 例如,将 Integer 类型的包装类对象 转为基本数据类型 int 类型
//定义一个Integer包装类对象
Integer integer=new Integer(32);
//转换为 基本数据类型 int
int num=integer.intValue();

7.3.3 装箱拆箱

  • Java 基于数据类型变量和包装类对象之间的转换比较烦琐
  • 自动装箱和自动拆箱功能就简化了此操作
  • 自动装箱:把基本类型变量直接转换为对应的包装类对象,或者转换为Object类型对象
  • 自动拆箱:与装箱相反,将包装类对象转换成对应的基本类型变量
  • 示例
public class Test02 {
    public static void main(String[] args) {
        //基本数据类型变量转换为包装类(装箱)
        Integer inObj=5;
        Object boolObj=true;
        System.out.println(inObj+","+boolObj);
        //包装类转换为基本数据类型(拆箱)
        int it=inObj;
        System.out.println(it);
        //如果 boolObj 是否属于包装类 Boolean
            if(boolObj instanceof Boolean){
               boolean b=(Boolean)boolObj;
                System.out.println(b);
            }
    }
}

7.3 日期类

7.3.1 日期类概述

  • JDK1.8中,所有的日期/时间基础类都包含在java.time包中
  • 所有关于时间和日期的 API 在使用上都存在缺陷
    • 易用性差,时间的计算方式烦琐
    • 不是线程安全的

7.3.2 创建日期对象

  • 日期和时间都位于 Java.time 包中,提供了一些常用的类

  • 在绝大多数情况下,这些类能够有效地处理一些公共的需求

  • java.time 包中表示日期的常用类

描述示例
LocalDate表示日期(年/月/日),不包含时间2020/11/24
LocalTime表示时间(时/分/秒/毫秒),不包含日期15:32:12
LocalDateTime表示日期和时间(年/月/日/时/分/秒/毫秒)2020/11/24 15:32
  • LocalDate 类、LocalTime 类、LocalDateTime 类的实例是不可变对象
    • 提供简单的日期或时间
    • 不包含与时区相关的信息
  • 日期类的通用方法
方法描述
日期类 now()据当前时间创建对象返回日期对象
日期类 of(int year, Month month, int dayOfMonth)据当前时间创建对象返回日期对象
Month getMonth()获取月份
int getDayOfMonth()返回当前日期对象的月份天数
int getYear()返回当前日期对象的年份
日期类 plusDays()
日期类 plusWeeks()
日期类 plusMonths()
日期类 plusYears()
在指定日期上添加天数
在指定日期上添加周数
在指定日期上添加月数
在指定日期上添加年数
  • 示例
LocalDate localDate=LocalDate.now(); //获取当前日期
LocalTime localTime=LocalTime.now(); //获取当前时间

7.3.3 日期格式化

  • 按照定义的格式输出时间,需要使用 DateTimeFormatter 类进行日期格式化处理
  • 日期格式化常用方法
方法描述
ofPattern()指定日期格式
使用不同的格式输出当前日期
如"yyyy年MM月dd日 HH:mm:ss" 分别表示年月日时分秒
format()将日期格式化为字符串
  • 日期格式化示例
public class Test03 {
    public static void main(String[] args) {
        //获取当前日期和时间
        LocalDateTime localDateTime=LocalDateTime.now();
        //指定日期格式
        DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        //将日期和时间格式化为指定的格式
        String str=localDateTime.format(formatter);
        System.out.println(str);
    }
}
  • 运行结果
2023021610:40:22

7.4 Random类

7.4.1 Random 类概述

  • 用于生成随机数
  • 位于 java.util 包中
  • Random 类的构造方法
方法描述
Random()创建一个随机数生成器
Random(long seed)使用单个long种子创建一个随机数生成器
  • Random 类定义了很多获取随机数的方法,最常用的为nextInt() 方法
  • nextInt()重载方法
方法描述
int nextInt();返回下一个伪随机数,它是此随机数生成器序列中均匀分布的int值
int nextInt(int n);取自此随机数生成的在0(包括)和指定值n(不包括)之间均匀分布的int值

7.4.2 Random 类示例

随机生成10个0-20的随机整数

public class Test04 {
    public static void main(String[] args) {
        Random random=new Random();
        for (int i = 1; i <= 10; i++) {
            System.out.println("第"+i+"个随机数:"+random.nextInt(20));
        }
    }
}

运行效果

1个随机数:102个随机数:163个随机数:54个随机数:185个随机数:106个随机数:77个随机数:158个随机数:39个随机数:210个随机数:2

tring[] args) {
Random random=new Random();
for (int i = 1; i <= 10; i++) {
System.out.println(“第”+i+“个随机数:”+random.nextInt(20));
}
}
}


**运行效果**

~~~java
第1个随机数:10
第2个随机数:16
第3个随机数:5
第4个随机数:18
第5个随机数:10
第6个随机数:7
第7个随机数:15
第8个随机数:3
第9个随机数:2
第10个随机数:2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值