JAVA基础 常用类一
包装类
我们平时经常使用的八大基本数据类型,也有其对应的引用数据类型,我们叫他们为包装类。
有了基本数据类型为什么还要与包装类型?
Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型,使用引用数据类型就具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
基本数据类型 | 包装类(引用数据类型) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
自动拆装箱:
自动装箱:基本–>包装
自动拆箱: 包装–>基本
比较:
总结: 表示的数据值相等
1.两个基本数据类型相比,肯定相等
2.两个通过new构建的Integer对象,不相等,new堆中地址不同
3.当基本数据类型与对应包装类型Integer去比较(自动装箱Integer|new Integer比较),都相等,包装类会先自动拆箱,
然后再与基本类型比教
4.如果两个Integer比较(Integer.valueOf()),内部会新建比较是否在缓冲区对象表示的数据值范围内(-128~127),如果是就返回通过一个缓冲区对象
如果不是,返回new Integer
int i1 = 127;
int i2 = 127;
Integer in1 = 127;
Integer in2 = 127;
Integer in3 = new Integer(127);
Integer in4 = new Integer(127);
System.out.println(i1 == i2); //true
System.out.println(in1 == in2); //true
System.out.println(in3 == in4); //false
System.out.println(i1 == in1); //true
System.out.println(i1 == in3); //true
System.out.println(in1 == in3); //false
//Integer.valueOf(128)
Integer in5 = 128;
Integer in6 = 128;
System.out.println(in5==in6); //false
枚举类(enum)
枚举:
表示一种事物的所有情况|可能,这个类型的实例由枚举类自己控制提供,(程序员确定已知)
枚举也是一个类,定义枚举类使用关键enum
所有的枚举类都会隐式的继承自java.lang.Enum类
在枚举类中,枚举类中的成员|枚举常量,作为当前枚举类的一个实例存在,默认被public static final修饰
枚举类的构造器默认private修饰,不允许外部通过new关键字创建对象
//状态
enum State{
BASY,NORMAL,FREE;
}
public class Employee {
private int id;
private String name;
private State stus; //枚举类型的成员变量
public Employee() {
}
public Employee(int id, String name, State stus) {
this.id = id;
this.name = name;
this.stus = stus;
}
//>>>>
//>>>
}
日期类
Date类
指的是java.util包下的日期类
构造器:
Date() 创建当前时间的日期对象
Date(long date) 表示从1970年1月1日00:00:00开始的多少ms以后的日期时间
1>date.getTime() 获得时间,长整型的毫秒数
2> boolean after(Date when) 测试此日期是否在指定日期之后。
boolean before(Date when) 测试此日期是否在指定日期之前。
int compareTo(Date anotherDate) 比较两个日期的订购。
boolean equals(Object obj) 比较两个相等的日期。
3>System.currentTimeMillis() 获取当前时间的毫秒数
java8的Date
Date 线程不安全的日期类,日期可改变setTime().
Java8新增的日期类,线程安全的,日期不可改变,返回新的日期对象
Java8提供的重要的日期类: LocalDate LocalDateTime DateTimeFormatter
了解计量单位类
常用方法
1>年份 : Year.now Year.of(2020)
月份: Month.of(10) 枚举类
年月日: LocalDate.now() LocalDate.of(2020,Month.of(2),02)
LocalDate.of(2020,Month.AUGUST,02)
2>格式化日期转化
//日期转化器
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”);
//格式化日期字符串
LocalDateTime now = LocalDateTime.now();
//format(格式器) 成员方法
String nowStr = now.format(formatter); //放入格式器
System.out.println(nowStr); //2020-12-02 15:54:51
//parse(日期字符串,格式器) 静态方法
LocalDateTime time = LocalDateTime.parse(“2020-12-02 15:54:51”,formatter);
System.out.println(time);
//日期类存再系列的get方法
System.out.println(time.getYear());
System.out.println(LocalDate.now().getYear());
System.out.println(LocalTime.now().getMinute());
//日期计算系列类
LocalDate today = LocalDate.now();
LocalDate birthDate = LocalDate.of(2010, 11, 1);
//时期间隔 年月日
Period p = Period.between(birthDate, today);
System.out.println(p.getYears()+“年”+p.getMonths()+“月”+p.getDays()+“日”);
//瞬间
Instant inst1 = Instant.now();
Instant inst2 = inst1.minus(Duration.ofSeconds(10));
System.out.println(inst1);
System.out.println(inst2);
System.out.println("毫秒相隔 : " + Duration.between(inst1, inst2).toMillis());
System.out.println("秒相隔 : " + Duration.between(inst1, inst2).getSeconds());
3>日期格式化类
SimpleDateFormat() 构造一个 SimpleDateFormat使用默认模式和日期格式符号默认 FORMAT区域设置。
format (Date) 日期对象转为字符串
parse(String) 字符串转为日期对象
//默认格式的转换器
SimpleDateFormat simple = new SimpleDateFormat(); //2020/12/2 下午2:52
SimpleDateFormat simple2 = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
//日期对象转为字符串
System.out.println(simple.format(date));
System.out.println(simple.parse("2020/1/1 下午2:52"));
System.out.println(simple2.format(date));
System.out.println(simple2.parse("2020-12-02"));