Math类、Arrays类、日期类
  BA7aR24amlGh 2023年11月02日 54 0

Math类

基本介绍

math类包含用于执行基本数学运算的静态方法,如初等指数、对数、平方根和三角函数。

Math类常用方法

Math类、Arrays类、日期类_数组

package com.study.srv.demo12;

/**
 * @author Wen先森
 * @version 1.0
 * @date 2022/3/14 14:41
 */
public class Demo01 {
    public static void main(String[] args) {
        //1.abs 绝对值
        int abs=Math.abs(-2);
        System.out.println(abs);
        //2.pow 求幂
        double pow=Math.pow(2,3);//2的3次方
        System.out.println(pow);
        //3.ceil 向上取整,返回>=该参数的最小整数
        double ceil =Math.ceil(3.02);
        System.out.println(ceil);
        //4.floor 向下取整,返回<=该参数的最小整数
        double floor=Math.floor(3.99);
        System.out.println(floor);
        //5.round 四舍五入
        long round=Math.round(5.2);
        System.out.println(round);
        //6.sqrt求开方
        double sqrt=Math.sqrt(6.0);
        System.out.println(sqrt);
        //7.random求随机数
        //获取一个a~b之间的一个随机整数。int num=(int)(Math.random()*(b-a+1)+a)
        System.out.println((int)(Math.random()*(10)));
        //8.max 求最大值
        System.out.println(Math.max(2,3));
        //8.min 求最小值
        System.out.println(Math.min(2,3));
    }
}

Math类、Arrays类、日期类_System_02

Arrays类

Arrays里面包含了一系列静态方法,用于管理或操作数组(比如排序和搜素)。

方法名

方法说明

toString()

返回数组的字符串形式

sort()

数组排序(自然排序和定制排序)

binarySearch()

通过二分搜索法进行查找,要求先排好序

copyOf()

数组元素复制

fill()

数组元素填充

equals()

比较数组是否完全一致

asList

将一组值,转换成list

package com.study.srv.demo12;

import java.util.Arrays;
import java.util.List;

/**
 * @author Wen先森
 * @version 1.0
 * @date 2022/3/14 15:33
 */
public class Demo02 {
    public static void main(String[] args){
        Integer [] a={-2,1,6,3,12,5};
        //1.Arrays.toString() 显示数组
        System.out.println(Arrays.toString(a));
        //2.Arrays.sort() 排序
        //因为数组是引用类型,所以通过sort排序后,会直接影响到实参a
        //也可以通过传入一个接口Comparator实现定制排序
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        //3.binarySearch() 二分法查找 存在返回数组下标,不存在返回-(low+1)即所查找的数应该在的地方+1
        //什么是应该在的地方,如:找10,6<10<12,所以它应该在12的位置,即数组下标为5
        int index=Arrays.binarySearch(a,10);
        System.out.println(index);
        //4.copyOf() 数组元素复制 从a数组中,拷贝a.length个数组到newA数组中
        //如果拷贝的长度大于a.length,就在新数组的后面,增加null
        //如果拷贝长度小于0,则会抛出异常NegativeArraySizeException
        Integer[] newA=Arrays.copyOf(a,a.length);
        System.out.println(Arrays.toString(newA));
        //5.fill 数组元素填充  即填入一个数替换原来的数组元素
        Integer[] num=new Integer[]{1,6,5,20,33,20,20};
        Arrays.fill(num,10);
        System.out.println(Arrays.toString(num));
        //6.equals 比较两个数组元素内容是否完全一致
        Integer [] a2={-2,1,6,3,12,5};
        Integer [] a3={-2,1,6,3,12,5};
        System.out.println(Arrays.equals(a3,a2));
        //7.asList 将数组转成一个List集合
        //返回的asList编译类型 List(接口)
        //asList 运行类型是Arrays类里面的内部私有方法ArrayList
        List<Integer> aslist=Arrays.asList(a2);
        System.out.println(aslist);
        System.out.println(aslist.getClass());
    }
}

Math类、Arrays类、日期类_Math_03

System类

方法名

方法说明

exit()

退出当前程序

arrayCopy()

复制数组元素,比较适合底层调用,一般使用Arrays.copyOf完成复制数组

currentTimeMilens()

返回当前时间距离1970-1-1的毫秒数

gc()

运行垃圾回收机制

package com.study.srv.demo12;

import java.util.Arrays;

/**
 * @author Wen先森
 * @version 1.0
 * @date 2022/3/15 16:34
 */
public class Demo05 {
    public static void main(String[] args) {
        //1.exit 退出当前程序
//        System.out.println("退出");
//        System.exit(0);
//        System.out.println("退出失败");
        //2.arrayCopy 复制数组元素
        int[] s = {1, 2, 3};
        int[] arr = new int[3];
        /*
         * @param      src      the source array.被复制数组元素的来源(源数组)
         * @param      srcPos   starting position in the source array.复制数组元素的起始下标
         * @param      dest     the destination array.目标数组(即把源数组的数据拷贝到那个数组)
         * @param      destPos  starting position in the destination data.目标数组的起始下标
         * @param      length   the number of array elements to be copied.要复制的数组元素数(从源数组拷贝多少个数据到目标数组)
         */
        System.arraycopy(s, 2, arr, 1, 1);
        System.out.println(Arrays.toString(arr));
        //3.currentTimeMillis 返回当前时间距离1970-1-1的毫秒数
        System.out.println(System.currentTimeMillis());
    }
}

Math类、Arrays类、日期类_System_04

BigInteger和BigDecimal类

  • BigInteger适合保存比较大的整型。
  • BigDecimal适合保存精度更高的浮点型(小数)。

常用方法名

方法说明

add()


subtract()


multiply


divide


package com.study.srv.demo12;

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

/**
 * @author Wen先森
 * @version 1.0
 * @date 2022/3/15 17:03
 */
public class Demo06 {
    public static void main(String[] args) {
        //当我们编程中,遇到需要处理很大的整数,但是long不够用,就可以使用BigInteger类搞定
//        long l=12345678911223345667899555;
        BigInteger i = new BigInteger("12345678911223345667899555");
        System.out.println(i);
        //对BigInteger 进行加减乘除是,要用相应的方法,不能直接使用+、-、*、/。
        BigInteger add=i.add(BigInteger.valueOf(123456));
        BigInteger sub=i.subtract(BigInteger.valueOf(123456));
        BigInteger mul=i.multiply(BigInteger.valueOf(123456));
        BigInteger div=i.divide(BigInteger.valueOf(123456));
        System.out.println(add);
        System.out.println(sub);
        System.out.println(mul);
        System.out.println(div);
        //当我们需要保存一个高精度的数时,double不够用,可以使用BigDecimal
        //对BigDecimal进行加减乘除是,要用相应的方法,不能直接使用+、-、*、/。
//        double b=3.141592678165498286289668855;
//        System.out.println(b);
        BigDecimal b = new BigDecimal("3.1415926846871456622924553");
        System.out.println(b);
        BigDecimal addD=b.add(BigDecimal.valueOf(3.14236));
        BigDecimal subD=b.subtract(BigDecimal.valueOf(3.14236));
        BigDecimal mulD=b.multiply(BigDecimal.valueOf(3.14236));
        //调用divide方法,指定精度即可,BigDecimal.ROUND_CEILING
        BigDecimal divD=b.divide(BigDecimal.valueOf(3.14236),BigDecimal.ROUND_CEILING);
        System.out.println(addD);
        System.out.println(subD);
        System.out.println(mulD);
        System.out.println(divD);
    }
}

Math类、Arrays类、日期类_数组_05

日期类

第一代日期类

  • Date:精确到毫秒,代表特定是瞬间
  • SimpleDateFormat:格式和解析日期的类。它允许进行格式化(日期—>文本)、解析(文本—>日期)和规范化。

字母序列

描述

示例

d

一个月中一位或两位数的日期

1-31

dd

一个月中两位数的日期

01-31

DDD

一年中三位数的日期

001-366

EEE

一周中缩写的日期

Mon-Sun

EEEE

一周中日期全称

Monday-Sunday

M

一位或两位数的月份

1-12

MM

两位数的月份

01-12

MMM

三个字母的月份缩写

Jan-Dec

MMMMM

月份的全称

January-December

y

一位或两位数的年份

0-99

yy

两位数的年份

00-99

yyyy

四位数的年份

2022

a

表示AM或PM

AM或PM

h

上午/下午(1-12)中的一位或两位数的小时数

1-12

hh

上午/下午(1-12)中的两位数的小时数

01-12

H

一天(1-12)中的一位或两位数的小时数

0-23

HH

一天(1-12)中的两位数的小时数

00-23

m

一小时中一位或两位数的分钟数

0-59

mm

一小时中两位数的分钟数

00-59

s

一分钟中一位或两位数的秒数

0-59

S

一位、两位或三位数的毫秒数

0-999

ss

一分钟中两位数的秒数

00-59

SSS

三位数的毫秒数

000-999

z或zzz

三个字母的时区缩写

EST、CST等

Z

相对于GMT的时区

-0500、-0600等

package com.study.srv.demo12;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author Wen先森
 * @version 1.0
 * @date 2022/3/15 18:02
 */
public class Demo07 {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();//获取当前系统时间 默认输出日期格式是国外的格式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");//设置日期格式
        String time=simpleDateFormat.format(date);//将日期转换成指定格式的字符串
        System.out.println("当前日期:"+time);
        Date d = new Date(124567);
        System.out.println("通过毫秒数转换成日期:"+simpleDateFormat.format(d));
        String s="2022年03月15日 06:40:27 星期二";
        Date pare=simpleDateFormat.parse(s);//也可以将指定格式的字符串转换成日期,
        // 得到的Date输出时依旧是按照国外的形式,如果希望指定格式输出,需要转换
        // String——>Date, 使用simpleDateFormat格式需要和你给的String格式一样,否则抛出转换异常
        System.out.println("通过指定格式的字符串转换成日期:"+pare);
//        new Date()
    }
}

Math类、Arrays类、日期类_Math_06

第二代日期类

  • 第二代日期类,主要就是Calendar类(日历)
  • Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段(例如获得下星期的日期)提供了一些方法。
package com.study.srv.demo12;

import java.util.Calendar;

/**
 * @author Wen先森
 * @version 1.0
 * @date 2022/3/15 19:00
 */
public class Demo08 {
    public static void main(String[] args) {
        //Calendar是一个抽象类,并且构造器是private
        //可以通过getInstance()来获取实例
        //提供大量的方法和字段给程序员
        Calendar c=Calendar.getInstance();//创建日历类对象
        System.out.println("c"+c);
        System.out.println("年:"+c.get(Calendar.YEAR));
        System.out.println("月:"+(c.get(Calendar.MONTH)+1));//因为Calendar返回月的时候,是从0开始编号,所以+1
        System.out.println("日:"+c.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:"+c.get(Calendar.HOUR));//这是12小时制的,24小时制的用HOUR_OF_DAY
        System.out.println("分:"+c.get(Calendar.MINUTE));
        System.out.println("秒:"+c.get(Calendar.SECOND));
        System.out.println(c.get(Calendar.YEAR)+"-"+(c.get(Calendar.MONTH)+1)+"-"+c.get(Calendar.DAY_OF_MONTH)
        +" "+c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND));

    }
}

Math类、Arrays类、日期类_System_07

第三代日期类

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

  1. 可变性:像日期和时间这样的类应该是不可变的。
  2. 偏移性:Date中的年份是从1900开始的,月份确实从0开始的。
  3. 格式化:格式化只对Date有用,对Calendar无效。
  4. 此外,它们也不是线程安全的;不能处理闰秒等(每隔两天,多出1秒)。

第三代日期类常用方法

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

LocalDate只包含日期,可以获得日期字段。

LocalTime只包含时间,可以获取时间字段。

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

LocalDate ld=LocalDate.now();//当前日期
        System.out.println(ld);
        LocalTime lt=LocalTime.now();//当前时间
        System.out.println(lt);
        LocalDateTime ldt=LocalDateTime.now();//当前日期时间
        System.out.println(ldt);
        //1.使用now() 表示返回当前的时间的对象
        System.out.println("年:"+ldt.getYear());//年
        System.out.println("月(英文):"+ldt.getMonth());//月(英文)
        System.out.println("月(数字):"+ldt.getMonthValue());//月(数字)
        System.out.println("日(按照月):"+ldt.getDayOfMonth());//日(按照月)
        System.out.println("日(按照周):"+ldt.getDayOfWeek());//日(按照周)
        System.out.println("日(按照年):"+ldt.getDayOfYear());//日(按照年)
        System.out.println("时:"+ldt.getHour());//时
        System.out.println("分:"+ldt.getMinute());//分
        System.out.println("秒:"+ldt.getSecond());//秒

Math类、Arrays类、日期类_System_08

2.DateTimeFormatter格式日期类

类似于SimpleDateFormat

DateTimeFormatter dtf=DateTimeFormatter.ofPattern(格式);

String str=dtf.format(日期对象);

DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy年-MM月-dd日 hh:mm:ss");
        String time=dtf.format(ldt);
        System.out.println(time);

3.Instant时间戳

类似于Date

提供了一系列和Date类转换的方式

Instant——》Date;

Date date=Date.form(instant);

Date——》Instant;

Instant instant=date.toInstant();

Instant is=Instant.now();
        Date date=Date.from(is);
        System.out.println(date);
        Date date1 = new Date();
        Instant instant=date1.toInstant();
        System.out.println(instant);

Math类、Arrays类、日期类_System_09

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
BA7aR24amlGh