Java面向对象(八):常用类、枚举、注解

常用类:

System:系统类,为final最终类,继承Object,提供了标准的输入、输出、错误输出流,

方法
System.currentTimeMillis();获取当前时间:毫秒值
System.exit(0) ; 正常退出程序
System.gc() ; 垃圾回收
getProperty()方法获取系统属性。

Date:日期时间,分为两个,一个是在util包下,一个是在sql包下(继承了util包下的Date类)两者是可以相互转换的。

Util包下的Date类:java.util.Date

两种构造方法:空构造和带毫秒数参数的构造

Date()
分配一个 Date对象,并初始化它,以便它代表它被分配的时间,测量到最近的毫秒。
Date(long date)
分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00 GMT。

SimpleDateFormat:格式化日期,可以将日期进行自定义格式化,
通过new构造方法的时候,传入参数来自定义格式。如“yyyy-MM-dd HH:mm:ss”

调用方法
Date—>String
(格式)format(),传的参数是一个Date类型的,输入的日期格式是自定义的格式

String—>Date
(解析)parse(),传的参数是一个String类型的,这个String的格式要和自定义的格式相同,否则抛出解析异常。

代码演示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Calendar 类:日历类,是抽象类。不能直接创建。需要通过getInstance();方法获得实例。使用默认时区和区域设置获取日历。

方法:
add()方法 根据日历的规则,将指定的时间量添加或减去给定的日历字段。
getTime()方法 Calendar转换为Date
setTime()方法 将Date转为Calendar
getTimeInMillis()方法 以毫秒为单位返回此日历的时间值。

JDK8中日期时间API的介绍

LocalDate、LocalTime、LocalDateTime

方法:
now() 获取实例,获得当前时间
of(int y,int M,int d,int H,int m,int s) 获得实例,根据参数获取时间
getXXX() 可以单独获得相应的年、月、日、时、分、秒

代码演示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Instant类:时间戳,瞬间
也是通过now()创建实例,获得的时间是子午线时间,需要获得北京时间需要加8小时
在这里插入图片描述

DateTimeFormatter:日期时间格式
和SimpleDateFormat类似
Date—>String
(格式)format(),传的参数是一个Date类型的,输入的日期格式是自定义的格式

String---->Date
(解析)parse(),传的参数是一个String类型的,这个String的格式要和自定义的格式相同,否则抛出解析异常。
在这里插入图片描述

Math
在lang包下,不需要导包,就可以使用,而且方法都是静态方法,可以直接用类名.方法名直接调用方法
• 方法比较多,需要用到的话,看API吧!!!

BigInteger 类:大整数,java.math包提供的处理大整数类型,实现了大整数的存储,四则运算,判断素数的方法,求幂,求模,求逆元,求最大公约数等方法。
有加减乘除等的方法

BigInteger a = new BigInteger("13343435454656576576767676767");
BigInteger b = new BigInteger("4959958585877477477474838");
//1.加
System.out.println(a.add(b));
//2.减
System.out.println(a.subtract(b));
//3.乘
System.out.println(a.multiply(b));
//4.除
System.out.println(a.divide(b));

BigDecimal :用来对超过16位有效位的数进行精确的运算

• java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。

 // 用字符串的形式初始化
        BigDecimal d1 = new BigDecimal("21233545464643232.983493849384");
        BigDecimal d2 = new BigDecimal("234545454545454545.232344454339933");
        //加法
        System.out.println("加法用string结果:" + d1.add(d2));
        //减法
        System.out.println("减法用string结果:" + d1.subtract(d2));
        //乘法
        System.out.println("乘法用string结果:" + d1.multiply(d2))
        //除法
        System.out.println("除法用string结果:" + 
        d1.divide(d2, 20, BigDecimal.ROUND_HALF_UP)); //四舍五入

其他:配置字节编码:-encoding UTF-8 -charset UTF-8

枚举enum

枚举是一种规范,它规范了参数的形式,这样就可以不用考虑类型的不匹配问题,并且显式的替代了int型参数可能带来的模糊概念,枚举像一个类,又像一个数组。

枚举的父类是enum,enum的父类是Object,构造方法是private,不可以在外部创建实例,常量的定义必须放在属性和方法(包括构造方法前)的前面,可以有方法,也可以实现接口

使用枚举,获得实例:通过枚举名.常量获得实例;通过枚举名.valueOf():参数是枚举的常量。
方法:values()获得枚举中的所有常量,保存在数组中。values()方法是一个特殊的方法,不是父类(Enum)中定义的,怎么来的? 当编译器在编译enum定义的枚举类型的时候,自动加入了一个static的values()方法。
枚举可以在switch()中使用。

• 例如:
– 四季(season):春(spring)、夏(summer)、秋(autumn)、冬(winter)
– 一周七天:周一 ….周日.
– 太阳系的行星:8大行星.
– 性别:man、woman.等等

• 当需要定义一组常量的时候,我们可以考虑定义枚举类。枚举类型要求对象参数是有限个的,不能是无限的。
• enum是一个关键字,定义枚举类。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注解

在这里插入图片描述

什么是元注解?就是对注解进行修饰、解释说明的注解。

JDK中提供了4种元注解
@Retention:指定所修饰的注解的生命周期。包括SOURCE、CLASS(默认行为)、RUNTIME。
按生命周期来划分可分为3类:

1、RetentionPolicy.SOURCE :注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;

这3个生命周期分别对应于:
Java源文件(.java文件) —> .class文件 —> 内存中的字节码。

@Target :指明被修饰的注解,能够用在哪些元素上。
在这里插入图片描述

@Documented:指明被修饰的注解,在生成API文档的时候,在文档中保留这个注解。

• 参见Date类中的@Deprecated 注解,就是通过这个注解修饰的,所以在API文档中可以看到保留的这个注解。
在这里插入图片描述

@Inherited:指明修饰的注解将具有继承性,父类被修饰了,子类自动有了这个注解。
在这里插入图片描述

被@Inherited修饰的注解,子类可以继承,直接就有了这个注解。

在这里插入图片描述

结束语

希望多多交流,多多关注
继续学习《Java面向对象(九):集合》…
拜拜啦…

猜你喜欢

转载自blog.csdn.net/zhangzhanbin/article/details/112398484