java常用类(下)
笔上得来终觉浅,绝知此事要躬行
🔥 个人主页:星云爱编程
🔥 所属专栏:javase
🌷追光的人,终会万丈光芒
🎉欢迎大家点赞👍评论📝收藏⭐文章
目录
一、Math 类
1.1基本介绍
1.2Math类常见方法(全是静态方法)
二、Arrays类
2.1基本介绍
2.2Arrays类常用方法
三、System类
3.1基本介绍
3.2 System类常用方法
四、BigInteger和BigDecimal
4.1BigInteger介绍
4.2BigDeciaml介绍
五、日期类
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): 减去小时。
结语
感谢您的耐心阅读,希望这篇博客能够为您带来新的视角和启发。如果您觉得内容有价值,不妨动动手指,给个赞👍,让更多的朋友看到。同时,点击关注🔔,不错过我们的每一次精彩分享。若想随时回顾这些知识点,别忘了收藏⭐,让知识触手可及。您的支持是我们前进的动力,期待与您在下一次分享中相遇!
路漫漫其修远兮,吾将上下而求索。