常用类之Math、Date、SimpleDateFormat、Calendar、Arrays

1.与数学相关的类

(1)Math

//Math类不可再被继承
public final class Math
extends Object

Math类中有两个静态常量:e和pi

//自然对数的基数
public static final double E = 2.7182818284590452354;

//圆周率
public static final double PI = 3.14159265358979323846;

Math类中的方法主要用于数学计算:如绝对值,指数,对数,开平方根,三角运算......

package com.dh.math;

public class MathDemo {

    public static void main(String[] args) {

        System.out.println("绝对值:"+ Math.abs(-2));
        System.out.println("两个值比较大小:"+Math.max(1,2));//还有min
        System.out.println("两个值的和:"+Math.addExact(1,2));
        System.out.println("角度的余弦值:"+Math.cos(90));//还有sin正弦值
        System.out.println("向下取整:"+Math.floor(1.2));
        System.out.println("向上取整:"+Math.ceil(1.2));
        System.out.println("以e为底的对数计算:"+Math.log(2));
        System.out.println("以10为底的对数计算:"+Math.log10(100));
        System.out.println("幂运算:"+Math.pow(2,3));
        System.out.println("0.0-1.0之间的随机数:"+Math.random());
    }
}

结果:

绝对值:2
两个值比较大小:2
两个值的和:3
角度的余弦值:-0.4480736161291701
向下取整:1.0
向上取整:2.0
以e为底的对数计算:0.6931471805599453
以10为底的对数计算:2.0
幂运算:8.0
0.0-1.0之间的随机数:0.35181532356779177

还有更多的方法可查看api文档~

2.与日期相关的类

(1)Date

public class Date
extends Object
implements Serializable, Cloneable, Comparable<Date>

使用:

package com.dh.date;

//注意是util包下的
import java.util.Date;

public class DateDemo {
    public static void main(String[] args) {
        //当前时间
        Date date = new Date();
        System.out.println("当前时间:"+date);

        Date date1 = new Date(10000000);//向1970.01.01 00:00:00前进参数(单位为ms)的时间
        System.out.println(date1);
    }
}

查看api发现很多的方法都弃用了,因为使用Calendar比较多了

(2)SimpleDateFormat

public class DateFormatter
extends InternationalFormatter

可以将Date类型的数据转换成其它格式的String类型

package com.dh.date;

//注意是util包下的
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo {
    public static void main(String[] args) {
        //当前时间
        Date date = new Date();
        System.out.println("当前时间:"+date);

        //将当前时间转换成指定格式的字符串
        //指定格式为:yyyy-MM-dd:HH:mm:ss(年-月-日:时:分:秒)需严格遵守大小写
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss");
        //转换时间为指定的格式,并将数据类型转换为字符串
        String formatDate = simpleDateFormat.format(date);
        System.out.println(formatDate);
    }
}

结果:

当前时间:Sat Jan 23 10:13:21 CST 2021
2021-01-23:10:13:21

(3)Calendar

public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable<Calendar>

可以看到Calendar是一个抽象类,不能直接实例化对象。

Calendar中有特别多的静态变量,包括年、月、时、分、秒等等.......(可以用于获取日历中特定的字段),可直接Calendar.属性获取。

常用方法:getTime、setTime(new Date())、get(Calendar.成员变量)、set(Calendar.成员变量,要设置的值)......

package com.dh.date;s

import java.util.Calendar;
import java.util.Date;

public class CalendarDemo {

    public static void main(String[] args) {

        //Calendar为抽象类,不能直接实例化对象
//        Calendar calendar = new Calendar();
        //使用方法获得一个Calendar对象
        Calendar calendar = Calendar.getInstance(); //使用默认时区和区域设置获取当前时间的日历


        //Calendar对象中包含特别多的信息
        System.out.println(calendar);

        //获取其中的时间信息:相当于new Date()的结果
        System.out.println("当前时间:"+calendar.getTime());

        //也可以自己设置一个时间
        calendar.setTime(new Date());

        //使用get()方法获取日历中的字段
        System.out.println("年:"+calendar.get(Calendar.YEAR));
        //注意:为0-11表示1月-12月,所以要+1
        System.out.println("月:"+calendar.get(Calendar.MONTH)+1);
        System.out.println("一月中的第几天:"+calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:"+calendar.get(Calendar.HOUR));
        System.out.println("分:"+calendar.get(Calendar.MINUTE));
        System.out.println("秒:"+calendar.get(Calendar.SECOND));

        System.out.println("=====================");
        //使用set()设置字段
        calendar.set(Calendar.YEAR,2022);
        //也可以直接指定增加的数值
        calendar.add(Calendar.MONTH,2);//月份+2
        //等等
        //再获取设置之后的值
        System.out.println("设置之后的时间:"+calendar.getTime());
        System.out.println("年:"+calendar.get(Calendar.YEAR));
        System.out.println("月:"+calendar.get(Calendar.MONTH));

    }
}

结果:

当前时间:Sat Jan 23 11:07:05 CST 2021
年:2021
月:01
一月中的第几天:23
时:11
分:7
秒:5
=====================
设置之后的时间:Wed Mar 23 11:07:05 CST 2022
年:2022
月:2

3.与数组相关的类

(1)Arrays

Java中有一个数组的工具类,其所有的方法都是static修饰的常量方法,可直接使用Arrays调用,用于操作数组。

最常用的为:

数组排序:sort(数组)

二分查找:binarySearch(数组, 查找的key)

package com.dh.arrays;

import java.util.Arrays;

public class ArraysDemo {

    public static void main(String[] args) {

        int [] a = {78,22,1,23,99,86,45};

        System.out.println("排序前数组:");
        //输出排序后的数组
        for (int i : a) {
            System.out.print(i+"\t");
        }
        System.out.println();

        //数组排序
        Arrays.sort(a);

        //输出排序后的数组
        System.out.println("排序后数组:");
        for (int i : a) {
            System.out.print(i+"\t");
        }
        System.out.println();

        //二分查找法查找元素
        //返回值为所在元素的下标,若不存在该元素则返回-1,可用于判断数组中是否包含某个元素
        int key = 23;
        int index = Arrays.binarySearch(a, key);
        System.out.println("元素"+key+((index == -1)?"不存在":("下标为:"+index)));
    }
}

结果:

排序前数组:
78	22	1	23	99	86	45	
排序后数组:
1	22	23	45	78	86	99	
元素23下标为:2
posted @ 2021-01-23 11:18  deng-hui  阅读(127)  评论(0编辑  收藏  举报