java Calendar类 Math类 System

226 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第31天,点击查看活动详情

Calendar类

概述

概述:

  • java.util.Calendar类表示一个“日历类”,可以进行日期运算。

  • 日历类把和时间相关的所有值都定义为了字段,对时间的操作可以用字段的方式完成。

  • 它是一个抽象类,不能创建对象,我们可以使用它的子类:java.util.GregorianCalendar类。

  • 有两种方式可以获取GregorianCalendar对象:

    • 直接创建GregorianCalendar对象;子类构造方法:

      GregorianCalendar()
      
    • 通过Calendar的静态方法getInstance()方法获取GregorianCalendar对象【本次课使用】

常用方法

方法名说明
public static Calendar getInstance()获取一个它的子类GregorianCalendar对象。
public int get(int field)获取某个字段的值。field参数表示获取哪个字段的值, 可以使用Calender中定义的常量来表示: Calendar.YEAR : 年 Calendar.MONTH :月 Calendar.DAY_OF_MONTH:月中的日期 Calendar.HOUR:小时 Calendar.MINUTE:分钟 Calendar.SECOND:秒 Calendar.DAY_OF_WEEK:星期
public void set(int field,int value)设置某个字段的值
public void add(int field,int amount)为某个字段增加/减少指定的值
setTime(Date date)把Date对象转成Calendar对象

get方法示例

说明:DAY_OF_WEEK的范围:1--7,分别表示:"星期日","星期一","星期二",...,"星期六"。在java中,星期日是一周的第一天。

  //  1  2  3  4  5  6  7
  //  日 一 二 三 四  五  六
public class Demo {
    public static void main(String[] args) {
        //1.获取一个GregorianCalendar对象
        Calendar instance = Calendar.getInstance();//获取子类对象
​
        //2.打印子类对象
        System.out.println(instance);
​
        //3.获取属性
        int year = instance.get(Calendar.YEAR);
        int month = instance.get(Calendar.MONTH) + 1;//Calendar的月份值是0-11
        int day = instance.get(Calendar.DAY_OF_MONTH);
​
        int hour = instance.get(Calendar.HOUR);
        int minute = instance.get(Calendar.MINUTE);
        int second = instance.get(Calendar.SECOND);
​
​
        System.out.println(year + "年" + month + "月" + day + "日" + 
                            hour + ":" + minute + ":" + second);
        
        int week = instance.get(Calendar.DAY_OF_WEEK);//返回值范围:1--7,分别表示:"星期日","星期一","星期二",...,"星期六"
        // 在java中,星期日是一周的第一天
        System.out.println("星期:" + method(week));
​
        //  1  2  3  4  5  6  7
        //  日 一 二 三 四  五  六
    }
​
    //把Calendar中的星期转成我们中国习惯的星期
    public static String method(int week){
        //创建数组
        String[] arr = {"","日","一","二","三","四","五","六"};
​
        //返回元素
        return arr[week];
    }
}
​

set和add方法示例

public class Demo {
    public static void main(String[] args) {
        //创建对象
        Calendar c = Calendar.getInstance();
​
        //void set(int field,int value) :设置某个字段的值
        //把年改为1999
        c.set(Calendar.YEAR,1999);
​
        System.out.println("年份是:" + c.get(Calendar.YEAR)); //1999
​
        //void add(int field,int amount):偏移(加减)某个字段的值
        //把年在原来的基础上减少100年
        c.add(Calendar.YEAR,-100);
        System.out.println("年份是:" + c.get(Calendar.YEAR)); //1899
​
        //请说出输出的是几?
        c.set(Calendar.MONTH,4); //把月份设置为4
        c.add(Calendar.MONTH,1); //把月份加1
    
        //输出的结果是5,但是代表的是六月
        System.out.println("月份是" + c.get(Calendar.MONTH)); 
    }
}

setTime(Date date)方法演示

void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。

/*
    void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。
 */
public class Test02 {
    public static void main(String[] args) {
          //创建日历
        Calendar c = Calendar.getInstance();
​
        //获取年
        int year = c.get(Calendar.YEAR);
        //没有更改c表示的内容,获取的是当前时间
        System.out.println(year);   //2020
​
        //创建日期对象
        Date d = new Date(3181277292010L);
        System.out.println(d);
​
        //把Date所表示的时间赋值给Calender
        //void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。
        c.setTime(d);
        //获取年
        int year2 = c.get(Calendar.YEAR);
        //更改之后c表示的内容,获取的是当前时间
        System.out.println(year2);   //2070
    }
}

Math类

概述

  • java.lang.Math(类): Math包含执行基本数字运算的方法。
  • 它不能创建对象,它的构造方法被“私有”了。因为他内部都是“静态方法”,通过“类名”直接调用即可。

常用方法

方法名说明
public static int abs(int a)获取参数a的绝对值:
public static double ceil(double a)向上取整
public static double floor(double a)向下取整
public static double pow(double a, double b)获取a的b次幂
public static long round(double a)四舍五入取整

示例代码

public class Demo {
    public static void main(String[] args) {
        System.out.println("-5的绝对值:" + Math.abs(-5));//5
        System.out.println("3.4向上取整:" + Math.ceil(3.4));//4.0
        System.out.println("3.4向下取整:" + Math.floor(3.4));//3.0
        System.out.println("2的8次幂:" + Math.pow(2, 8));//256.0
        System.out.println("3.2四舍五入:" + Math.round(3.2));//3
        System.out.println("3.5四舍五入:" + Math.round(3.5));//4
​
    }
}

System

概述

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。

常用方法

方法名说明
public static void exit(int status)终止当前运行的 Java 虚拟机,非零表示异常终止
public static long currentTimeMillis()返回当前时间(以毫秒为单位)
static void arrayCopy()数组中元素的复制

代码演示:

public class Demo02{
    public static void main(String[] args) {
​
        //退出虚拟机
        //System.exit(0);
​
        //获取当前时间的毫秒值
        long time1 = System.currentTimeMillis();
        System.out.println(time1);
​
        //Date
        Date d = new Date();
        long time2 = d.getTime();
        System.out.println(time2);
​
​
        //数组中元素的复制
        int[] arr = {11,22,33,44,55,66};
        int[] brr = {0,0,0,0,0,0};
​
        /*
        复制数组的方法:
        static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)  
            参数:
                src - 源数组。
                srcPos - 源数组中的起始位置。
                dest - 目标数组。
                destPos - 目标数据中的起始位置。
                length - 要复制的数组元素的数量。 
         */
        System.arraycopy(arr,2,brr,0,3);
​
        //打印数组查看结果
        for (int i = 0; i < brr.length; i++) {
            System.out.print(brr[i] + " ");
        }
        // brr :  33 44 55 0 0 0 
        System.out.println();
        System.out.println("------------------------------");
        //练习
        System.arraycopy(brr,0,brr,2,2);
​
        //打印数组查看结果
        for (int i = 0; i < brr.length; i++) {
            System.out.print(brr[i] + " ");
        }
        // 33 44 33 44 0 0 
    }
}