1.Date类

1.date类的使用
创建一个date类对象:Date date=new Date();
format
这边的date还不是我们想要的格式,因此我要进行转换
首先创建SimpleDateFormat(DateFormat的子类)对象:SimpleDateFormat sdf=new SimpleDateFormat ("yyyy年MM月dd日 HH时mm分ss秒");这边的字符串参数是我们想要的日期格式。
sdf对象调用format方法格式化,将date时间作为参数传递到方法中,并且用一个字符串接收:String d=sdf.format(date);
其中parse方法是将已经格式化的日期还原成格式化之前的日期。
代码如下:

SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH-mm-ss");
        //用SimpleDateFormat对象调用DateFormat的format方法
        String d=sdf.format(date);
        System.out.println(d);//2020-12-16 00-01-17
        Date parse = sdf.parse(d);
        System.out.println(parse);//Wed Dec 16 00:01:17 GMT+08:00 2020

2.Calendar 日历类

Calendar类是一个抽象类,里边提供了很多操作日历字段的方法,因此日历类是无法直接创建对象使用,Calendar中有一个静态方法getInstance(),该方法返回了Calendar类的子类对象。
Calendar类中常用的成员方法有:
public int get(int field):返回给定日历字段的值。
public void set(int field,int value):将给定的日历字段设置为给定值
public abstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量
下面是对成员方法的参数的解释:
int field:日历类的字段,可以使用Calendar类的静态成员变量获取
public static final int YEAR; 年
public static final int MONTH;月
public static final int DATE; 月中的某一天
public static final int DAY_OF_MONTH;月中的某一天
public static final int HOUR;时
public static final int MINUTE;分
public static final int SECOND;秒
get()方法的案例代码

//使用getIntance方法获取Calendar子类对象
        //c是Calendar子类的对象
        Calendar c=Calendar.getInstance();
        //通过子类对象访问Calendar类的静态变量YEAR
        //再把访问YEAR的值赋值给i
        int i = c.get(Calendar.YEAR);
        System.out.println(i);//2020
        int i1 = c.get(Calendar.MONTH)+1;//西方月份0-11
        System.out.println(i1);//  12
        //这个月的第几天:DAY_OF_MONTH
        int i2 = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(i2);//16

set()方法的案例代码

//使用getInstance方法获取Calendar子类对象
        Calendar c=Calendar.getInstance();
        //设置年为9999年
        c.set(Calendar.YEAR,9999);
        //同时设置年月日,使用set的重载方法
        int i = c.get(Calendar.YEAR);
        System.out.println(i);//9999

add()方法案例代码

 //使用getInstance方法获取Calendar子类对象
        Calendar c = Calendar.getInstance();//当前是2020年
        //把年增加2年
        c.add(Calendar.YEAR,2);
        int i = c.get(Calendar.YEAR);
        System.out.println(i);//2022

当然日历类也有获取当前日期的方法:通过Calendar子类对象调用getTime()方法就能返回一个date日期
代码如下:

Calendar c = Calendar.getInstance();
        //将日历格式转换为日期格式
        Date time = c.getTime();
        System.out.println(time);//Wed Dec 16 00:46:11 GMT+08:00 2020
        //SimpleDateFormat是DateFormat的子类
        //创建一个SimpleDateFormat对象,通过构造方法传递需要的格式
        SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd");
        //用SimpleDateFormat对象调用DateFormat的format方法
        String d = sdf.format(time);
        System.out.println(d);//2020-12-16

System类

currentTimeMillis()方法:返回以毫秒为单位的当前时间(自1970年1月1日00:00:00 GTM以来的毫秒数)
代码:

long s = System.currentTimeMillis();
        System.out.println(s);//1608051691306
        for (int i = 0; i < 9999; i++) {
            System.out.println(i);
        }
        long e = System.currentTimeMillis();
        System.out.println(e);//1608051691357
        System.out.println("for循环用时"+(e-s)+"毫秒");//for循环用时51毫秒

其中s为循环开始时间,e为循环结束时间
Arraycopy()方法:由方法名可知,这是复制数组的一个方法
public static void arraycopy (Object src,int srcPos,Object dest,int destPos,int length)
src-源数组 srcPos-源数组中的起始索引 dest-目标数组 destPos-目标数组中的起始位置 length-要赋值的数组数量
代码:

//定义源数组
        int []src={1,2,3,4,5};
        //定义目标数组
        int []dest={6,7,8,9};
        System.out.println("复制前"+ Arrays.toString(dest));//复制前[6, 7, 8, 9]
//   使用System类中的arraycopy把源数组的前3个元素复制到目标数组的前3个位置
        System.arraycopy(src,0,dest,0,3);
        System.out.println(Arrays.toString(dest));//[1, 2, 3, 9]

由于数组的长度不可变性,复制过去的值将直接覆盖原来的数组值。

StringBuilder类 字符串缓冲区

StringBuilder bu1=new StringBuilder();空构造方法将构造一个不带任何字符的字符串生成器,容量为16
StringBuilder bu2=new StringBuilder("abc");带参数的构造方法将构造一个字符串生成器,并初始化为指定的字符串内容
append()方法
此方法为添加字符串的方法
代码:

//创建一个StringBuilder对象,并赋值
        StringBuilder bu3=new StringBuilder("abc");
        //使用append方法添加字符串
         bu3.append("123");
         System.out.println("bu3:"+bu3);//bu3:abc123

String字符串是常量,他们的值在创建之后不能改变
StringBuilder是字符串缓冲区(看成一个长度可以变化的字符串,底层是一个数组),可以提高字符串的操作效率。在内存中始终是一个长度为16数组,如果字符串超出了StringBuilder的容量,会自动扩容
String和StringBuilder相互转换的代码:

//String-->StringBuilder
         String str="hello";
         System.out.println("str:"+str);//str:hello
         StringBuilder bu1=new StringBuilder(str);
         //往StringBuilder添加数据
         bu1.append("world");
         System.out.println("bu1:"+bu1);//bu1:helloworld
         //StringBuilder-->String
         String s = bu1.toString();
         System.out.println(s);//helloworld

今天先写到这里,一点多了已经,外加今天感冒了加鼻炎老难受了,还是先结束休息吧,明天继续更... 2020.12.16
今天继续昨天的复习...2020.12.17
##Integer类,自动装箱与自动拆箱
自动装箱:直接把int类型的整数赋值包装类:Integer in=1;相当于Integer in =newInteger(1);
自动拆箱:iu是包装类,无法直接参与运算,可以自动转换为基本数据类型,再进行计算