Java编程 JavaSe08

一、Date类(util)

  • 表示特定的时间,精确到毫秒。表示日期和时间的类。
  • 毫秒表示千分之一秒。1000毫秒=1秒。
  • 特定的瞬间:一个时间点。

(一)毫秒值的概念和作用

1、毫秒值:

(1)作用:可以对时间和日期进行计算。可以把日期转换为毫秒进行计算,计算完毕,再把毫秒转换为日期。

(2)把当前的日期转换为毫秒:

  • 当期的日期:2008-01-01
  • 时间原点(0毫秒):1970年1月1日00:00:00
  • 就是计算当前日期

(3)把毫秒转化为日期

  • 一天=86400000毫秒
  •  中国属于东八区,会把时间增加8个小时。

2、Date类的构造方法和成员方法

 (1)空参数构造方法:

Date()获取当前系统的日期和时间

(2)带参数的构造方法:

Date(long date):传递毫秒值,把毫秒值转换为日期

(3)成员方法

long getTime():
返回自1970年至今经历了多少毫秒
import java.util.Date;

public class Date1 {
    public static void main(String[] args) {
        //无参数构造方法
        Date d1=new Date();
        System.out.println(d1);
        //有参数的构造方法
        Date d2 =new Date(857);
        System.out.println(d2);
        //成员方法
        Date d3=new Date();
        long time=d3.getTime();
        System.out.println(time);
    }
}
Sun Mar 07 20:40:35 CST 2021
Thu Jan 01 08:00:00 CST 1970
1615120835544

二、DateFormat类(text)

  • 时间日期格式化子类的抽象类。
  • 作用:格式化(日期——文本)解析(文本——日期)

(一)Format方法

1、按照指定的模式,将Date日期格式化为符合模式的字符串。

2、把符合模式的字符串解析为Date日期。

3、DateFormat类是一个抽象类,无法直接创建对象使用,可以使用其子类。 

4、SimpleDate类

构造方法:
    SimpleDateFormat(String pattern)
参数:
    String pattern:传递指定的模式
模式:区分大小写
        y-年 M-月 d-日 H-时 m-分 s-秒
写对应的模式,就会把模式替换为对应的日期和时间
如:“yyyy-MM-dd HH:mm:ss”
    “yyyy年MM月dd日HH时mm分ss秒”
注意:模式中的字母不能更改

使用步骤

  • 创建对象,构造方法中传递指定的模式
  • 调用format方法,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)

parse方法

  • 创建对象,构造方法中传递指定的模式
  • 调用parse方法,把符合构造方法中模式的字符串,解析为Date日期
  • parse方法声明了一个异常(解析异常),如果字符串和构造方法中的模式不一样就会出现异常。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Date2 {
    public static void main(String[] args) throws ParseException {
        //format方法
        SimpleDateFormat d1 =new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        Date date1=new Date();
        String t1=d1.format(date1);
        System.out.println(date1);
        System.out.println(t1);
        //parse方法,注意异常的处理
        SimpleDateFormat d2 =new SimpleDateFormat("yyyy年yy月yy日 HH时mm分ss秒");
        Date date2=d2.parse("2021年03月09日 20时23分20秒");
        System.out.println(date2);
输出为:
Tue Mar 09 20:25:35 CST 2021
2021年03月09日 20时25分35秒
Thu Jan 01 20:23:20 CST 2009

三、Calendar类(日历类)

1、Calender类的简单使用

  • 抽象类,里面提供了很多操作日历字段的方法(YEAR、MONTH等)
  • 该类无法直接创建对象使用,里面有一个静态方法叫getInstance(),该方法返回了Calender类的子类对象。
  • static Calendar getInstance()使用默认时区和语言环境获得一个日历。
import java.util.Calendar;

public class Date3 {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        System.out.println(c);
        
    }
}
输出为:
java.util.GregorianCalendar[time=1615293478771,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=2,WEEK_OF_YEAR=11,WEEK_OF_MONTH=2,DAY_OF_MONTH=9,DAY_OF_YEAR=68,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=8,HOUR_OF_DAY=20,MINUTE=37,SECOND=58,MILLISECOND=771,ZONE_OFFSET=28800000,DST_OFFSET=0]

2、Calendar类的常用成员方法

成员方法:
    public int get(int field):返回给定日历字段的值
    public void set(int field,int value):将给定的日历字段设定为给定值
    public abstract void add(int field,int amount):根据日历的规则,为给定的日历字            
    段添加或减去指定的时间量
    public Date gerTIme():返回一个表示此Calendar时间值(从历元到现在的毫秒值偏移 
    量)的Date对象。
成员方法参数:
     int field:日历类的字段,可以使用Calender类的静态成员变量获取 
     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;秒
    
  • public int get(field):返回给定日历字段的值
  • 参数:
  • 返回值:日历字段代表的具体的值
 public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        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);
        int day2=c.get(Calendar.DAY_OF_MONTH );
        System.out.println(day2);


    }
输出为 :2021 2 9 9
  • public void set(int field,int value):将给定的日历字段设定为给定值
  • int field:传递指定日历字段(YEAR,MONTH等)
  • int value: 传递的字段设置的具体值
  • 单独设置使用两个参数,同时设置年月日使用set的重载方法。
public static void demo02(){
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR,2001);
        c.set(Calendar.MONTH,04);
        c.set(Calendar.DATE,21);
        //同时使用年月份可以使用set的重载方法
        c.set(2000,2,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);


    }
//输出为:2021 04 021 2000 2 9
  • public abstract void add(int field,int amount):根据日历的规则,为给定的日历字            
        段添加或减去指定的时间量
  • int field:传递指定日历字段(YEAR,MONTH等)
  • int amount:增加/减少的值
public static void demo03(){
        Calendar c = Calendar.getInstance();
        c.add(Calendar.YEAR,-20);
        c.add(Calendar.MONTH,2);
        c.add(Calendar.DATE,12);
        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);

    }
//输出为:2001 4 21
  •  public Date gerTIme():返回一个表示此Calendar时间值(从历元到现在的毫秒值偏移 

    量)的Date对象。

public static void demo04() {
        Calendar c = Calendar.getInstance();
        Date date=c.getTime();
        System.out.println(date);

    }
//输出为:Tue Mar 09 21:29:36 CST 2021

四、System类

  • 提供大量的静态方法,可以获取与系统相关的信息或系统级操作。

1、public static long currentTimeMillis():返回以毫秒为单位的当前时间

  • 用来测试程序的效率

例如:验证for循环打印数字1-9999所需使用的时间(毫秒)

  • 程序执行前/后分别获取一次毫秒值,并将前后相减 

  

public static void main(String[] args) {
        long a =System.currentTimeMillis();
        for (int i = 0; i < 9999; i++) {
            System.out.println(i);
        }
        long b= System.currentTimeMillis();
        System.out.println("循环遍历用时"+(b-a)+"毫秒");
    }
输出:循环遍历用时51毫秒

2、public static void arraycopu(Object src,int srcPos,Object dest,int length)

  • 将数组中的指定数据拷贝到另一书数组中
  • 参数:
  • scr——源数组  srcPos——源数组中的起始位置 dest——目标数组 destPos——目标数据中的起始位置 length——要复制的数组元素的数量

练习:将scr数组的前三个元素,复制到dest数组的前三个位置上

public static void main(String[] args) {
        int [] src={1,2,3,4,5};
        int [] dest={6,7,8,9,10};
        System.out.println("复制前:"+ Arrays.toString(dest));
        System.arraycopy(src,0,dest,0,3);
        System.out.println("复制后:"+ Arrays.toString(dest));
    }
输出为:
复制前:[6, 7, 8, 9, 10]
复制后:[1, 2, 3, 9, 10]

五、StringBuilder类

1、原理

(1)String类:字符串是常量,它们的值在创建之后不能改变。字符串的底层是一个被final修饰的数组,不能改变,是一个常量。

  • 进行字符串的相加,内存终究会有多个字符串。占用空间多,效率低下。           

(2)StringBuilder类:字符串缓冲区,可以提高字符串的操作效率(看成是一个长度可以变化的字符串)

  • 底层也是一个数组但是没有被final修饰可以改变长度
  • StringBuilder在内存中始终是一个数组,占用空间少,效率高,如果超出了StringBuilder的容量,会自动的扩容。

2、StringBuilder的构造方法

  • public StringBuilder():构造一个空的StringBuilder容器
  • public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。
 public static void main(String[] args) {
        StringBuilder B1=new StringBuilder();
        System.out.println("B1:"+B1);
        StringBuilder B2=new StringBuilder("abc");
        System.out.println("B2:"+"abc");
    }
B1:
B2:abc

3、成员方法

(1)public StringBuilder append():添加任意类型数据的字符串形式,并返回当前对象自身

  • 参数:可以是任意的数据类型 
 public static void main(String[] args) {
        StringBuilder B1=new StringBuilder();
        StringBuilder B2 = B1.append("abc");
        //append返回为this
        System.out.println(B1);
        System.out.println(B2);
        System.out.println(B1==B2);//B1与B2为同一对象,返回值为true

    }

abc
abc
true
  • 使用append方法不需要接收返回值
  • 链式编程:方法的返回值是一个对象,可以根据对象继续调用方法
public static void main(String[] args) {
        StringBuilder B1=new StringBuilder();
        B1.append("abc").append("nice").append(123);
        System.out.println(B1);
    }
//输出为:abcnice123

(2)reverse方法

  • 字符串反转
B1.reverse();
System.out.println(B1);
//输出为:321ecincba

(3)toString方法

  • public String toString():将当前的StringBuilder对象转化为String对象

 

 public static void main(String[] args) {
        String str = "Hello!";
        System.out.println(str);
        //将字符串转化为字符串对象
        StringBuilder bu = new StringBuilder(str);
        bu.append("Java!");
        System.out.println(bu);
        //将字符串对象转化为字符串
        bu.toString();
        System.out.println(bu);
    }
Hello!
Hello!Java!
Hello!Java!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值