java常用类(下)

笔上得来终觉浅,绝知此事要躬行

🔥 个人主页:星云爱编程

🔥 所属专栏:javase

🌷追光的人,终会万丈光芒

🎉欢迎大家点赞👍评论📝收藏⭐文章

目录

[一、Math 类](#一、Math 类)

1.1基本介绍

1.2Math类常见方法(全是静态方法)

二、Arrays类

2.1基本介绍

2.2Arrays类常用方法

三、System类

3.1基本介绍

[3.2 System类常用方法](#3.2 System类常用方法)

四、BigInteger和BigDecimal

4.1BigInteger介绍

4.2BigDeciaml介绍

五、日期类

[5.1 第一代日期类(Date)](#5.1 第一代日期类(Date))

5.1.1基本介绍

5.1.2应用

Ⅰ获取当前系统时间

Ⅱ通过构造器指定毫秒数得到时间

Ⅲ解析文本为日期

5.2第二代日期类(Calendar)

5.2.1基本介绍

5.2.2应用

5.3第三代日期类

5.3.1前两代日期类的不足之处

5.3.2基本介绍

5.3.3应用

5.3.4Instant时间戳

5.3.5第三代日期类常用方法

结语


一、Math 类

1.1基本介绍

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

1.2Math类常见方法(全是静态方法)

(1)abs:返回绝对值

(2)pow:求幂

(3)cbrt:返回立方根

(4)ceil: 向上取整,返回>=该参数的最小整数(转成double);

(5)floor :向下取整,返回<=该参数的最大整数(转成double)

(6)round :四舍五入 Math.floor(该参数+0.5)

(7)sqrt :求开方,返回的是double型

(8)random: 求随机数;Math.random() * (b-a) 返回的就是 0 <= 数 <=b-a

(9)max:求两个数的最大值

(10)min:求两个数的最小值

二、Arrays类

2.1基本介绍

该类包含用于操作数组的各种方法(如排序和搜索)。 该类还包含一个静态工厂,可以将数组视为列表。

如果指定的数组引用为空,则该类中的方法都抛出一个NullPointerException ,除非另有说明。

2.2Arrays类常用方法

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

(2)sort:可用于各种数组排序

(3)binarySerach:二分查找,通过二分查找进行查找,要求必须排好序,如果数组中不存在钙元素,就返回-(low+1).,low为该元素存在时的索引。

(4)copyOf:数组元素的复制

注:从arr数组中,,拷贝arr.length个元素到newarr数组中

如果拷贝长度大于arr.length就在新数组的后面null

如果拷贝长度小于0,就抛出NegativeArraySizeException异常

(5)fill:数组元素的填充

可以理解成是替换原数组元素,例如:

  int arr[]={124,4,54,2,65,23,74};
    Arrays.fill(arr,0);
    for(int data:arr){
        System.out.print(data);
    }

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

注:Arrays.equals(arr1,arr2),如果arr1和arr2数组的元素一样,则返回true,否则返回false

(7)asList:将一组值,转换为List

eg. List list=Arrays.aslist(1,2,3,4,5,6);

①asList方法会将(1,2,3,4,5,6)数据转成一个List集合

②返回的list 编译类型 List(接口)

③list的运行类型为java.util.Arrays#ArrayList

三、System类

3.1基本介绍

System类包含几个有用的类字段和方法。 它不能被实例化。

System类提供的System包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 一种加载文件和库的方法; 以及用于快速复制阵列的一部分的实用方法。

3.2 System类常用方法

(1)exit:退出当前程序

exit(0) 表示程序退出;

0 表示一个状态 , 正常的状态

(2)arraycopy:复制数组元素,比较适合底层调用,一般使用Arrays.copy完成复制数组

System.arraycopy(Object src,  int  srcPos, Object dest, int destPos, int length);

参数解读:

src:源数组

srcPos:从源数组的某个位置开始拷贝

dest:目标数组,即将数据拷贝到该数组

destPos:把源数组的数据拷贝到目标数组的某个索引

length:从源数组拷贝多少个数据到目标数组

(3)currentTimeMillens:返回当前时间距离1970/1/1的毫秒数

(4)gc:运行垃圾回收机制

四、BigInteger和BigDecimal

4.1BigInteger介绍

当我们编程中,需要处理很大的整数,long也不够用时,我们可以使用BigInteger类来搞定.

eg.

BigInteger bigInteger=new BigInteger("99999999999999999)

注意:

(1)在对BigInteger进行加减乘除时,需要使用对应的方法,不能直接用+、-、*、/

(2)运算方法:①加:add;②减:subtract;③乘:multiply;④除:divid。

4.2BigDeciaml介绍

当我们需要保存一个精度很高的数时,double也不够用时,可以用BigDecimal

eg:

BigDecimal bigDecimal = new BigDecimal("12.3454565475676745645534433");

注:加减乘除时需用对应的方法,同BigInteger

五、日期类

5.1 第一代日期类(Date)

5.1.1基本介绍

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

(2)SimpleDateFormat:格式和解析日期的类。SimpleDateFormat允许进行格式化(日期->文本)、解析(文本->日期)和规范化。其参数表:

5.1.2应用

Ⅰ获取当前系统时间
public class Test5 {
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
        String formatDate=sdf.format(date);
        System.out.println(formatDate);
    }
}

(1)Date date = new Date(); 获取当前系统时间

解读:

①这里的Date类是在java.util包;

②默认输出日期的格式是国外的方式,因此通常要对格式进制转换

(2)格式转换:

复制代码
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
String formatDate=sdf.format(date);

解读:

①创建SimpleDateFormat对象,可以指定相应格式;

②这里的格式的使用的字母是规定好的,不能乱写;

③format方法将日期转换成指定格式的字符串

Ⅱ通过构造器指定毫秒数得到时间
public class Test6 {
    public static void main(String[] args) {
        Date date = new Date(235078425);
        System.out.println(date);
        Date date1 = new Date();
        long m=date1.getTime();
        System.out.println(m);
    }
}

Date date=new Date(235078425);通过构造器指定毫秒数得到时间

解读:

①指定毫秒是从1970/1/1开始加的

②long m=date1.getTime();获取某个时间对应从1970/1/1开始的毫秒数。

Ⅲ解析文本为日期
public class Test7 {
    public static void main(String[] args) throws ParseException {
        String s="2024/12/28";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
        Date parse=sdf.parse(s);
        System.out.println(parse);
    }
}

解读:

可以把一个格式化的String转成对应的Date;

得到的Date不做格式化处理的话,仍默认为国外的格式;

在把String转成Date时,使用的sdf格式需要与待转化的String的格式一致,否则将抛出转换异常。

5.2第二代日期类(Calendar)

5.2.1基本介绍

(1)第二代日期类主要就是Calendar类(日历)

(2)Calender类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。

5.2.2应用

public class Test8 {
    public static void main(String[] args) {
        Calendar c=Calendar.getInstance();//创建对象
        System.out.println(c.get(Calendar.YEAR));//获取目前年份
        System.out.println(c.get(Calendar.MONTH)+1);//获取目前月份,从0开始,所以要加1
        System.out.println(c.get(Calendar.DAY_OF_MONTH));//获取目前在一个月的日期
        System.out.println(c.get(Calendar.HOUR_OF_DAY));//获取目前的时刻(24小时制)
        System.out.println(c.get(Calendar.MINUTE));//获取目前在最近一个小时内的分钟数
    }
}

解读:

(1)Calendar是一个抽象类,并且构造器是private,可以通过getInstance()来获取实例;

(2)Calendar没有提供对应的格式化的类,因此需要程序员自己组合来输出(灵活);

(3)Calendar返回月的时候,是按照0开始编号,所以月份要加1。

5.3第三代日期类

5.3.1前两代日期类的不足之处

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

(2)偏移性:Date中的年份是从1970年开始,月份从0开始;

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

(4)线程不安全,不能处理间秒(每隔两天就会多出一秒)。

5.3.2基本介绍

第三代日期类包括:LocalDate(日期)、LocalTime(时间)、LocalDateTime(日期时间)等

(1)LocalDate只包含日期,可以获取日期字段;

(2)LocalTime只包含时间,可以获取时间字段;

(3)LocalDateTime包含日期和时间,可以获取日期和时间字段

5.3.3应用

public class Test9 {
    public static void main(String[] args) {
        LocalDateTime ldt=LocalDateTime.now();
        DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy年MM月dd日");
        String format=dtf.format(ldt);
        System.out.println(format);
    }
}

解读:

(1)使用now()返回表示当前日期时间的对象;

(2)LocalDate.now()可以获取年月日,无时分秒;

(3)LocalTime.now()可以获取时分秒,无年月日;

(4)使用DateTimeFormatter对象对LocalDateTime对象进行格式化,调用的是ofPattern方法。

5.3.4Instant时间戳

public class Test10 {
    public static void main(String[] args) {
        //Instant->Date
        Instant now= Instant.now();
        Date date=Date.from(now);
        System.out.println(date);
        //Date->Instant
        Date date1=new Date();
        Instant instant=date1.toInstant();
        System.out.println(instant);
    }
}

(1)通过静态方法now()获取表示当前时间戳的对象

(2)通过from可以把Instant转成Date

(3)通过 date 的toInstant() 可以把 date 转成Instant 对象

5.3.5第三代日期类常用方法

(1)LocalDate类常用方法

now(): 获取当前日期。

of(int year, int month, int dayOfMonth): 创建一个`LocalDate`实例。

getYear(): 获取年份。

getMonth(): 获取月份。

getDayOfMonth(): 获取月份中的日期。

isLeapYear(): 判断是否为闰年。

(2)LocalTime类常用方法

now(): 获取当前时间。

of(int hour, int minute, int second): 创建一个`LocalTime`实例。

getHour(): 获取小时。

getMinute(): 获取分钟。

getSecond(): 获取秒。

plusHours(long hoursToAdd): 添加小时。

minusHours(long hoursToSubtract): 减去小时。

(3)LocalDateTime类常用方法

now(): 获取当前的日期和时间。

of(LocalDate date, LocalTime time): 使用`LocalDate`和`LocalTime`创建一个实例。

toLocalDate(): 获取日期部分。

toLocalTime(): 获取时间部分。

plusDays(long daysToAdd): 添加天数。

minusDays(long daysToSubtract): 减去天数。

plusHours(long hoursToAdd): 添加小时。

minusHours(long hoursToSubtract): 减去小时。

结语

感谢您的耐心阅读,希望这篇博客能够为您带来新的视角和启发。如果您觉得内容有价值,不妨动动手指,给个赞👍,让更多的朋友看到。同时,点击关注🔔,不错过我们的每一次精彩分享。若想随时回顾这些知识点,别忘了收藏⭐,让知识触手可及。您的支持是我们前进的动力,期待与您在下一次分享中相遇!

路漫漫其修远兮,吾将上下而求索。

相关推荐
夜半被帅醒5 分钟前
【JAVA】神经网络的基本结构和前向传播算法
java·神经网络·算法
TANGLONG2222 小时前
【初阶数据结构与算法】排序算法总结篇(每个小节后面有源码)(直接插入、希尔、选择、堆、冒泡、快速、归并、计数以及非递归快速、归并排序)
java·c语言·数据结构·c++·算法·面试·排序算法
Allen_LVyingbo2 小时前
Python 青铜宝剑十六维,破医疗数智化难关(上)
开发语言·笔记·python·健康医疗·集成学习
我荔枝呢!2 小时前
集合(List、Set、Map)ArrayList、LinkedList、Vector、HashSet、LinkedHashSet、HashMap
java·开发语言
zhxueverme2 小时前
JAVA学习笔记_Redis进阶
java·笔记·学习
怀念无所不能的你2 小时前
洛谷P2814 家谱(c嘎嘎)
c语言·数据结构·c++·算法·map·并查集
tianyueWindbg4 小时前
IDEA错题集
java·ide·intellij-idea
我明天再来学Web渗透4 小时前
【2024年-9月-21日-开源社区openEuler实践记录】PilotGo:简化运维管理的开源利器
运维·开发语言·架构·开源·开源软件
全栈老实人_5 小时前
旅游管理系统|Java|SSM|VUE| 前后端分离
java·开发语言·tomcat·maven
CoderLi_6 小时前
Java 类加载机制
java·jvm·类加载