资讯详情

(八)Math 类、Arrays 类、System类、Biglnteger 和 BigDecimal 类、日期类

一、Math 类(P481)

Math类别包括初等指数、对数、平方根和三角函数等基本数学操作方法

1)abs:绝对值 2)pow:求幂

        double pow = Math.pow(2, 4); // 2的4次方         System.out.println(pow); // 16.0

3)ceil:向上取整返回 >= 最小参数整数

        // ceil 向上取整,返回 >= 参数的最小整数         double ceil1 = Math.ceil(-3.2);         double ceil2 = Math.ceil(3.2);         System.out.println(ceil1); // -3.0         System.out.println(ceil2); // 4.0

4)floor:向下取整返回 <= 最大整数

5)round:四舍五入 6)sqrt:求开方

        double sqrt = Math.sqrt(9.0);         System.out.println(sqrt); // 3.0

7)random:求随机数返回是 0 <= x < 1 随机小数

        double random = Math.random();

请写出获取a-b之间的随机整数a,b均为整数?2 <= x <= 7

        double random = 2   Math.random() * 6;

8)max:两个数的最大值 9)min:两个数的最小值

二、Arrays 类(P482)

Arrays 管理或操作数组(如排序和搜索)包含一系列静态方法。

1)tostring:返回数组的字符串形式

        Integer[] arr = {1, 20, 30};         System.out.println(Arrays.toString(arr)); // [1, 20, 30]

2)sort排名:(自然排名和定制排名)

        // 自然排序         Integer[] arr = {1, -1, 7, 50};         Arrays.sort(arr);         System.out.println(Arrays.toString(arr)); // [-1, 1, 7, 50]
        // 定制排序         Integer[] arr = {1, -1, 7, 50};          // o1 - o2 :升序         // o2 - o1 :降序         Arrays.sort(arr, new Comparator<Integer>() {             @Override             public int compare(Integer o1, Integer o2) {                 return o2 - o1;             }         });         System.out.println(Arrays.toString(arr)); // [50, 7, 1, -1]

3)binarySearch:通过二分搜索法搜索,数组必须排序

        Integer[] arr = {-1, 1, 7, 50};          int index1 = Arrays.binarySearch(arr, 1);         System.out.println(index1); // index1 = 1          // 如果元素不存在于数组中,则返回 -(low  1)         // low 为,若有索引位置         int index2 = Arrays.binarySearch(arr, 5); // low:2         System.out.println(index2); // index1 = -3

4)copyOf:复制数组元素

        Integer[] arr = {-1, 1, 7, 50};                  int len1 = arr.length - 1;         Integer[] newArr1 = Arrays.copyOf(arr, len1); // [-1, 1, 7]         System.out.println(Arrays.toString(newArr1));          // 若复制长度 > 原数组长度,后面添加 null         int len2 = arr.length   1;         Integer[] newArr2 = Arrays.copyOf(arr, len2); // [-1, 1, 7, 50, null]         System.out.println(Arrays.toString(newArr2));          // 若复制长度 < 0,抛出异常         int len3 = -1;         Integer[] newArr3 = Arrays.copyOf(arr, len3); // [-1, 1, 7, 50, null]         System.out.println(Arrays.toString(newArr3));

5)fill:填充数组元素

        Integer[] arr = {-1, 1, 7, 50};         // 用 99 替换原数组的所有元素         Arrays.fill(arr,99);         System.out.println(Arrays.toString(arr)); // [99, 99, 99, 99]

6)equals:比较两个数组元素的内容是否完全一致

        Integer[] arr1 = {-1, 1, 7, 50};         Integer[] arr2 = {-1, 1, 7, 50};         System.out.println(Arrays.equals(arr1,arr2)); // true

7)asList:将一组值转换成ist

        Integer[] arr = {-1, 1, 7, 50};         List<Integer> aslist = Arrays.asList(arr);                  /*             aslist 运行类型 class java.util.Arrays$ArrayList             是 Arrays类的 静态内部类             private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable          */         System.out.println(aslist.getClass());

三、System类(P486)

1)exit退出当前程序

2)arraycopy:复制数组元素,更适合底层调用。一般使用 Arrays.copyOf() 复制数组

        Integer[] arr = {-1, 1, 7, 50};         Integer[] destArr = new Integer[4]; // {0,0,0,0};          /*             五个参数:             参数一:src【源数组】             参数二:srcPos【源数组开始复制索引位置】             参数三:dest【目标数组】             参数四:destPos开始复制目标数组的索引位置             参数五:length【源数组拷贝的数据长度】          */         System.arraycopy(arr, 0, destArr, 0, arr.length);

3)currentTimeMillens:1970-1-1毫秒返回当前时间距 4)gc:运行垃圾回收机制 System.gc();

四、Biglnteger 和 BigDecimal 类(P487

1)Biglnteger 适合保存比较大的整型 2)BigDecimal 适合保存精度更高的浮点型(小数)

        BigInteger bigInteger = new BigInteger("10000");
        BigDecimal bigDecimal = new BigDecimal("20.88");

1. Biglnteger 和 BigDecimal 常见方法

(1)add加 (2)subtract减

(3)multiply乘 (4)divide除【divide 可以指定精度:BigDecimal.ROUND_CEILING等等】

五、日期类(P488)

1. 第一代日期类 Date

1)Date:精确到毫秒,代表特定的瞬间

2)SimpleDateFormat:格式和解析日期的类

 

        Date date = new Date(); // 获取当前系统时间
        System.out.println(date); // Mon Jul 25 20:42:17 CST 2022

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
        String format = sdf.format(date);
        System.out.println(format); // 2022年07月25日 08:42:17 星期一

        Date parse = sdf.parse(format);
        System.out.println(parse); // Mon Jul 25 08:42:17 CST 2022

2.  第二代日期类 Calendar (日历)

public abstract class (Calendarimplements Serializable,Cloneable,Comparable<Calendar>

(1)Calendar类是一个抽象类,并且构造器是 protected。只能通过 getInstance() 来获取实例

(2)它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法

        Calendar instance = Calendar.getInstance();
        // 获取日历对象的某个日历字段
        System.out.println("年:"+instance.get(Calendar.YEAR));
        System.out.println("月:"+(instance.get(Calendar.MONTH)+1));
        System.out.println("日:"+instance.get(Calendar.DAY_OF_MONTH));
        System.out.println("小时(12):"+instance.get(Calendar.HOUR));
        System.out.println("小时(24):"+instance.get(Calendar.HOUR_OF_DAY));
        System.out.println("分钟:"+instance.get(Calendar.MINUTE));
        System.out.println("秒:"+instance.get(Calendar.SECOND));

3.  第三代日期类

3.1 前面两代日期类的不足分析

JDK1.0中包含了一个 java.util.Date 类,但是它的大多数方法已经在JDK1.1引入 Calendar 类之后被弃用了。

而 Calendar 也存在问题是:

(1)可变性:像日期和时间这样的类应该是不可变的

(2)偏移性:Date中的年份是从1900开始的,而月份都从0开始

(3)格式化:格式化只对Date有用,Calendar则不行

(4)此外,它们也不是线程安全的;不能处理闰秒等(每隔2天,多出1s)。

3.2 第三代日期类常见方法

LocalDate(日期/年月日)、LocalTime(时间/时分秒)、LocalDateTime(日期时间/年月日时分秒)JDK8加入

LocalDate只包含日期,可以获取日期字段 LocalTime只包含时间,可以获取时间字段 LocalDateTime包含日期+时间,可以获取日期和时间字段

        LocalDateTime now = LocalDateTime.now();
        LocalDate.now();
        LocalTime.now();
        System.out.println(now); // 2022-07-26T00:04:00.395

        System.out.println(now.getYear()); // 2022
        System.out.println(now.getMonth()); // JULY
        System.out.println(now.getMonthValue()); // 7
        System.out.println(now.getDayOfMonth()); // 26
        System.out.println(now.getHour()); // 0
        System.out.println(now.getMinute()); // 4
        System.out.println(now.getSecond()); // 0

3.3  DateTimeFormatter格式日期类

类似于 SimpleDateFormat

        LocalDateTime now = LocalDateTime.now();
        System.out.println(now); // 2022-07-26T00:38:30.801

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String format = dtf.format(now);
        System.out.println(format); // 2022-07-26 00:38:30

3.4  Instant时间戳

类似于 Date

        Instant now = Instant.now();
        System.out.println(now); // 2022-07-25T16:43:09.732Z

        Date date = Date.from(now);
        Instant instant = date.toInstant();

3.5  第三代日期类更多方法

提供plus和minus方法可以对当前时间进行加或者减

        LocalDateTime now = LocalDateTime.now();
        System.out.println(now); // 2022-07-26T00:50:49.265

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        System.out.println(dtf.format(now)); // 2022-07-26 00:50:49

        // 890 天后
        LocalDateTime ldt1 = now.plusDays(890);
        System.out.println(dtf.format(ldt1)); // 2025-01-01 00:50:49

        // 180 分钟前
        LocalDateTime ldt2 = now.minusMinutes(180);
        System.out.println(dtf.format(ldt2)); // 2022-07-25 21:50:49

标签: 继电器底座dtf08a

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台