Java筑基21-Java中的常用类02(Math类、Arrays类、System类、日期类)

目录

一、Math类

1.常用方法

2.练习题

二、Arrays类

三、System类

四、日期类

1.第一代日期类

2.第二代日期类

3.第三代日期类


一、Math类

1.常用方法

Math类包含用于执行数学运算的方法

/**
 * @author: 程序员飞扬
 * @description:
 */
public class Math01 {
    public static void main(String[] args) {
        //1. abs绝对值
        int n = -50;
        System.out.println(Math.abs(n));

        //2. pow求幂
        double pow = Math.pow(-3.5, 4);
        System.out.println(pow);//(-3.5)的四次方

        //3. ceil向上取整
        double ceil = Math.ceil(3.9);
        System.out.println(ceil);
        double ceil1 = Math.ceil(-4.9);
        System.out.println(ceil1);

        //4. floor向下取整
        double floor = Math.floor(5.6);
        System.out.println(floor);

        //5. round四舍五入
        long round = Math.round(2.6);
        System.out.println(round);
        long round1 = Math.round(2.4);
        System.out.println(round1);

        //6. sqrt 开方
        double sqrt = Math.sqrt(9);
        System.out.println(sqrt);

        //7. random求随机数
        double random = Math.random();//返回的是0~1之间的小数
        System.out.println(random);//0.2821134901462201

        //8. max求两个数中的最大值
        int max = Math.max(5, 28);
        System.out.println(max);

        //9. 求两个数中的最小值
        double min = Math.min(2.1, 3.6);
        System.out.println(min);

    }
}

2.练习题

获取a-b之间的一个随机整数,a,b均为整数

/**
 * @author: 程序员飞扬
 * @description:获取a-b之间的一个随机整数,a,b均为整数
 */
public class MathExercise01 {
    public static void main(String[] args) {
         int a = 2;
         int b = 7;
        for (int i = 0; i < 10; i++) {
            System.out.println((int)(a + Math.random()*(b-a+1)));//返回2-7之间的数
        }
    }
}

二、Arrays类

1.

/**
 * @author: 程序员飞扬
 * @description:
 */
public class ArraysMethod01 {
    public static void main(String[] args) {
        Integer[] n = {20,1,36};
        System.out.println(Arrays.toString(n));//[1, 20, 36]

        Arrays.sort(n);//默认排序
        System.out.println(Arrays.toString(n));

        //自定义排序
        Arrays.sort(n, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return (Integer)o2 - (Integer)o1;
            }
        });
        System.out.println(Arrays.toString(n));

    }
}

array模拟排序

package com.feiyang.basic11;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author: 程序员飞扬
 * @description:
 */
public class ArraysMethod01 {
    public static void main(String[] args) {
        Integer[] n = {20,1,36};
        System.out.println(Arrays.toString(n));//[1, 20, 36]

        Arrays.sort(n);//默认排序
        System.out.println(Arrays.toString(n));

        //自定义排序
        Arrays.sort(n, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return (Integer)o2 - (Integer)o1;
            }
        });
        System.out.println(Arrays.toString(n));

    }
}

输出:

[1, 6, 23, 25, 56]

/**
 * @author: 程序员飞扬
 * @description:binarySearch二分查找
 */
public class ArraysMethod02 {
    public static void main(String[] args) {
        /**
         * 要求该数组有序,
         * 找不到返回-(low+1),即它应该存在的位置再加一然后取反
         *
         * 结论,查不到值返回负数
         */
        int[] n = {1, 6, 23, 25, 56};
        System.out.println(Arrays.binarySearch(n,6));//1
        System.out.println(Arrays.binarySearch(n,24));//-4

        int[] n2 = {1, 23, 6, 56, 42};
        System.out.println(Arrays.binarySearch(n2,7));//3
    }
}
/**
 * @author: 程序员飞扬
 * @description:
 */
public class ArraysMethod02 {
    public static void main(String[] args) {
        /**
         * 要求该数组有序,
         * 找不到返回-(low+1),即它应该存在的位置再加一然后取反
         *
         * 结论,查不到值返回负数
         */
        int[] n = {1, 6, 23, 25, 56};
        System.out.println(Arrays.binarySearch(n,6));//1
        System.out.println(Arrays.binarySearch(n,24));//-4

        int[] n2 = {1, 23, 6, 56, 42};
        System.out.println(Arrays.binarySearch(n2,7));//3

        //copyOf:   从原数组中copy指定长度的数组形成一个新数组
        int[] ints = Arrays.copyOf(n, n.length);
        System.out.println(Arrays.toString(ints));//[1, 6, 23, 25, 56]

        int[] ints2 = Arrays.copyOf(n, 2);
        System.out.println(Arrays.toString(ints2));//[1, 6]

        //fill: 用指定值填充数组
        Arrays.fill(n,99);
        System.out.println(Arrays.toString(n));//[99, 99, 99, 99, 99]

        int[] e1 = {1, 6, 23, 25, 56};
        int[] e2 = {1, 6, 23, 25, 56};
        int[] e3 = {1, 6, 23, 25, 99};
        boolean equals1 = Arrays.equals(e1, e2);
        System.out.println("结果:" + equals1);//结果:true
        boolean equals2 = Arrays.equals(e1, e3);
        System.out.println("结果:" + equals2);//结果:false

        List asList = Arrays.asList(2, 5, 6, 8);
        System.out.println(asList);//[2, 5, 6, 8]
        System.out.println(asList.getClass());//class java.util.Arrays$ArrayList
    }
}

三、System类

四、BigInteger&BigDecimal

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * @author: 程序员飞扬
 * @description:
 */
public class BigNum {
    public static void main(String[] args) {

        //=========================BigInteger=========================
        //long l = 23456299999999999999999999999l;
        //程序中需要处理很大的整数,long不够用
        BigInteger bigInteger = new BigInteger("23456299999999999999999999999");
        BigInteger bigInteger1 = new BigInteger("100");
        System.out.println(bigInteger);
        System.out.println(bigInteger.add(bigInteger1));//加
        System.out.println(bigInteger.subtract(bigInteger1));//减
        System.out.println(bigInteger.multiply(bigInteger1));//乘
        System.out.println(bigInteger.divide(bigInteger1));//除


        //=========================BigDecimal=========================
        //当程序需要保存精度很高的数时,double不够用
        BigDecimal bigDecimal = new BigDecimal("199.11111111111111111111111111");
        BigDecimal bigDecimal1 = new BigDecimal("33");
        System.out.println(bigDecimal.add(bigDecimal1));
        System.out.println(bigDecimal.subtract(bigDecimal1));
        System.out.println(bigDecimal.multiply(bigDecimal1));
        //System.out.println(bigDecimal.divide(bigDecimal1));//可能抛出异常ArithmeticException
        System.out.println(bigDecimal.divide(bigDecimal1,BigDecimal.ROUND_CEILING));//
    }
}

四、日期类

1.第一代日期类

/**
 * @author: 程序员飞扬
 * @description:
 */
public class Date01 {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();//获取当前系统时间
        System.out.println(date);//Mon May 30 00:16:05 GMT+08:00 2022
        Date date2 = new Date(51616131);//通过指定毫秒数获取时间
        System.out.println(date2);//Thu Jan 01 22:20:16 GMT+08:00 1970

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
        String format = sdf.format(date);
        System.out.println(format);//2022年05月30日 12:16:05 星期一

        String s = "2022年05月30日 12:13:52 星期一";
        Date parse = sdf.parse(s);
        System.out.println(parse);//Mon May 30 00:13:52 GMT+08:00 2022
        System.out.println(sdf.format(parse));//2022年05月30日 12:13:52 星期一

    }
}

2.第二代日期类

import java.util.Calendar;

/**
 * @author: 程序员飞扬
 * @description:
 */
public class Calendar01 {
    public static void main(String[] args) {
        //创建日历类对象(简单自由)
        //Calendar是抽象类,而且构造器私有化了,所以不能通过new创建实例化对象,只能通过getInstance方法
        Calendar c = Calendar.getInstance();
        System.out.println(c);

        System.out.println("年:" + c.get(Calendar.YEAR));
        System.out.println("月:" + (c.get(Calendar.MONTH)+1));
        System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:" + c.get(Calendar.HOUR));
        System.out.println("分:" + c.get(Calendar.MINUTE));
        System.out.println("秒:" + c.get(Calendar.SECOND));

        //Calendar没有专门的格式化方法,需要自己组合
        System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH)+1)+ "-" + c.get(Calendar.DAY_OF_MONTH));
    }
}

输出:

java.util.GregorianCalendar[time=1653842554007,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=4,WEEK_OF_YEAR=23,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=150,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=42,SECOND=34,MILLISECOND=7,ZONE_OFFSET=28800000,DST_OFFSET=0]

年:2022

月:5

日:30

时:0

分:42

秒:34

2022-5-30

3.第三代日期类

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * @author: 程序员飞扬
 * @description:
 */
public class LocalDate01 {
    public static void main(String[] args) {
        //===================LocalDateTime获取当前时间==================
        LocalDate now = LocalDate.now();
        LocalTime now1 = LocalTime.now();
        LocalDateTime ldt = LocalDateTime.now();

        System.out.println(now);//2022-05-30
        System.out.println(now1);//01:03:47.703
        System.out.println(ldt);//2022-05-30T01:03:47.703

        System.out.println("年:" + ldt.getYear());//年:2022
        System.out.println("月:" + ldt.getMonth());//月:MAY
        System.out.println("月:" + ldt.getMonthValue());//月:5
        System.out.println("日:" + ldt.getDayOfMonth());//日:30
        System.out.println("时:" + ldt.getHour());//时:1
        System.out.println("分:" + ldt.getMinute());//分:3
        System.out.println("秒:" + ldt.getSecond());//秒:47


        System.out.println("今年第几天:" + ldt.getDayOfYear());//今年第几天:150
        System.out.println("周几:" + ldt.getDayOfWeek());//周几:MONDAY


        //===================DateTimeFormatter格式化==================
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm:ss");
        String format = df.format(ldt);
        System.out.println(format);//2022年05月30日 01:12:49


        //===================Instant时间戳==================
        //Instant => Date   |   Date date = Date.form(instant);
        //Date => Instant   |   date.toInstant();
        Instant now2 = Instant.now();//获取当前时间的时间戳对象
        System.out.println(now2);//2022-05-29T17:25:05.023Z

        Date date = Date.from(now2);//把Instant转换成Date
        System.out.println(date);//Mon May 30 01:25:05 GMT+08:00 2022

        Instant instant = date.toInstant();//把日期转换成时间戳
        System.out.println(instant);//2022-05-29T17:25:05.023Z


        //===================第三代日期更多用法==================
        //假设当前时间为ldt = 2022年05月30日 01:43:34
        LocalDateTime localDateTime = ldt.plusYears(1);
        LocalDateTime localDateTime1 = ldt.plusMonths(1);
        LocalDateTime localDateTime2 = ldt.plusDays(1);
        LocalDateTime localDateTime3 = ldt.plusWeeks(1);
        LocalDateTime localDateTime4 = ldt.plusHours(1);
        LocalDateTime localDateTime5 = ldt.plusMinutes(10);
        LocalDateTime localDateTime6 = ldt.plusSeconds(30);
        LocalDateTime localDateTime7 = ldt.plusNanos(900);

        System.out.println("一年后:" + df.format(localDateTime));//2023年05月30日 01:43:34
        System.out.println("一月后:" + df.format(localDateTime1));//2022年06月30日 01:43:34
        System.out.println("一天后:" + df.format(localDateTime2));//2022年05月31日 01:43:34
        System.out.println("一周后:" + df.format(localDateTime3));//2022年06月06日 01:43:34
        System.out.println("一小时后:" + df.format(localDateTime4));//2022年05月30日 02:43:34
        System.out.println("10分钟后:" + df.format(localDateTime5));//2022年05月30日 01:53:34
        System.out.println("30秒后:" + df.format(localDateTime6));//2022年05月30日 01:44:04
        System.out.println("900毫秒后:" + df.format(localDateTime7));//2022年05月30日 01:43:34

        //减法相同
        LocalDateTime localDateTime8 = ldt.minusDays(1);
        System.out.println("一天前:" + df.format(localDateTime8));//2022年05月29日 01:43:34
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员飞扬

赠人玫瑰,手有余香,感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值