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