11.24知识点
1、日期时间类
注意:中国是东8区,时间会增加8小时
// 获取系统时间1970.1.1 00:00:00(1970.1.1 08:00:00)到现在日期共经历的毫秒值
System.currentTimeMillis()
// 毫秒值转换成天
1天 = 24 X 60 X 60 X 1000 = 8640000毫秒
System.currentTimeMillis() / 1000 / 60 / 60 / 24
1.1 Date类
java.util.Date类,表示特定的瞬间,精确到毫秒
1.1.1 Date类空参构造(获取当前系统日期时间)
Date date = new Date() // Tue Nov 23 21:04:04 CST 2021 // CST 中国标准时间
1.1.2 Date类有参构造(传递long类型的毫秒值,可把毫秒转换成Date日期)
Date date = new Date(-(8 * 60 * 60 * 1000)) // Thu Jan 01 00:00:00 CST 1970
1.1.3 成员方法 public long getTime() // (相当于System.currentTimeMillis())
// 将Date日期转换成毫秒值
long dateTime = date.getTime()
1.2 DateFormat类
DateFormat是Format(日期/时间格式化子类的抽象类),抽象类不可直接创建对象使用,可以使用它的子类SimpleDateFormat
1.2.1 构造方法
语法:
SimpleDateFormat simple = new SimpleDateFormat("指定格式");
// 如:yyyy年MM月dd日 HH时mm分ss秒
y 年 M 月 d 天 H 小时 m 分 s 秒
1.2.2 format方法 (将日期格式化为指定文本格式)
// public String formar (Date日期)
String date = simple.format(System.currentTimeMillis())
1.2.3 parse方法 (将符合构造方法格式的文本解析为Date日期)
注:public Date parse(String source) throws ParseException
// parse方法申明了异常,如果传递的参数与构造方法格式不一样,就会抛出ParseException异常,需要手动处理异常,要么在方法处继续抛出异常throws,要么try/catch
1.2 Calendar日历类
java.util.Calendar
// 抽象类,无法直接创建对象使用,可以使用静态方法getInstance(),返回了Calendar类的子类对象
Calendar c = Calendar.getInstance(); // 多态
1.2.1 成员变量
int field可以根据Calendar中的成员变量来获取
public static final int YEAR = 1; //年
public static final int MONTH = 2; // 月 (西方月,0-11)
public static final int DATE = 5; // 月中的某一天
public static final int DAY_OF_MONTH = 5; // 月中的某一天
public static final int HOUR = 10; // 时
public static final int MINUTE = 12; // 分
public static final int SECOND = 13; // 秒
1.2.2 成员方法:
public int get(int field) // 传递指定的日历字段(YEAR, MONTH···)返回给定日历字段的值
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
System.out.println("当前年为:" + year);
public void set(int field, int value) // 设置指定的日历字段为具体的value值
int field // 传递指定的日历字段(YEAR, MONTH···)
int value // 传递int field字段设置的具体的值
Calendar c = Calendar.getInstance();
System.out.println(c);
// c.set(Calendar.YEAR, 2099);
// c.set(Calendar.MONTH, 9);
// c.set(Calendar.DAY_OF_MONTH, 29);
c.set(2099, 9, 9);
int year = c.get(Calendar.YEAR);
System.out.println(year);
int month = c.get(Calendar.MONTH);
System.out.println(month);
int day = c.get(Calendar.DATE);
System.out.println(day);
public abstract void add(int field, int amount)
// 给指定日历字段添加或者减少指定的amount时间量
int field // 传递指定的日历字段(YEAR, MONTH···)
int amount // 增加/减少的值 正数增加,负数减少
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -1); //给年减1
public Date getTime() // 将日历转化为Date日期
2、System类
2.1 System.currentTimeMillis()
// 获取系统时间1970.1.1 00:00:00(1970.1.1 08:00:00)到现在日期共经历的毫秒值
可以用来测试程序运行的效率
2.1 System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src: 源数组
srcPos:源数组中的起始位置
dest:目标数组
destPos:目标数组中的起始位置
length:要复制的数组元素的数量
int[] src = {1, 2, 3, 4};
int[] dest = {6, 7, 8, 9};
System.arraycopy(src, 0, dest, 0, 2);
System.out.println(Arrays.toString(dest)); //[1, 2, 8, 9]
3、StringBuilder类
// java.lang.StringBuilder字符串缓冲区,可以提高字符串的操作效率,底层也是一个数组,但是没有被final修饰,可以改变长度(初始长度16),超出了16,则会自动扩容到32
3.1 构造方法
3.1.1 空参构造
public StringBuilder() // 构造一个空的StringBuilder容器
3.1.2 有参构造
Public StringBuilder(String str) // 构造一个空的StringBuilder容器并将字符串添加进去
3.1.3 成员方法
public SrtringBuilder append(任意数据类型) // 添加任意类型数据的字符串形式并返回当前对象自身(返回的是this)
StringBuilder st = new StringBuilder();
StringBuilder st1 = st.append(123);
System.out.println(st); // "123"
System.out.println(st1); // "123"
System.out.println(st == st1); // true 返回对象本身
// 使用append方法无需接受返回值,因为返回的是this本身
StringBuilder st = new StringBuilder();
st.append(123).append(456).append(789);
System.out.println(st); // "123456789"
3.1.4 public String toString() // 将StringBuilder转化为String字符串
String str = st.toString();
System.out.println(str);
4、包装类
概念:基本数据类型没有相对应的方法来操作这些数据,所以使用一个类把基本数据包装起来,这个类就叫包装类,包装类中可以定义一些方法,用来操作基本类型数据。
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
4.1 装箱与拆箱
装箱:把基本类型数据,包装到包装类中
构造方法:
public Integer(int value) // 构造一个新分配的Integer对象,表示指定的int的值
public Integer(String s) // 构造一个新分配的Integer对象,表示String参数所指示的int的值,传递的字符串必须是基本类型的字符串,如:"100"类型, “abc”
静态方法:
public static Integer valueOf(int i) // 返回一个表示指定的int值的Integer实例
public static Integer valueOf(String s) // 返回一个表示指定的String的值的Integer实例
拆箱:在包装类中取出基本类型的数据
成员方法:
public int intValue() // 以int类型返回该Integer的值
4.2 自动装箱与自动拆箱
// jdk1.5之后 ,基本类型数据和包装类之间可以自动的相互转换
// 自动装箱 Integer i = 1;
// 自动拆箱 i = i +2;
4.3 基本类型转换为字符串
1、基本数据类型值 + “”
2、使用包装类中的静态方法
static String toString(int i) // 返回一个表示指定整数的String对象
3、使用String类中的静态方法
static String valueOf(int i) // 返回int参数的字符串表示形式
4.4 字符串转换为基本数据类型
public static byte/short/int/long/float/double/boolean parseByte/Short/Int/Long/Float/Double/Boolean(String s)
// 将字符串参数转换为对应的基本类型
// 除Character类之外,其他包装类都具有parsexx静态方法