Math
abs:获取绝对值
absExact:获取绝对值
ceil:向上取整
floor:向下取整
round:四舍五入
max:获取最大值 minL获取最小值
pow:获取a的b词幂 sqar:开平方根 cbrt:开立方根
random:获取[0.0,1.0)之间的随机数
//abs获取绝对值
System.out.println(Math.abs(88));//88
System.out.println(Math.abs(-88));//88
//进一法往数轴正方向进一
System.out.println(Math.ceil(12.34));//13.0
System.out.println(Math.ceil(12.54));//13.0
System.out.println(Math.ceil(-12.34));//-12.0
System.out.println(Math.ceil(-12.54));//-12.0
//去尾法,往数轴负方向进一
System.out.println(Math.floor(12.34));//12.0
System.out.println(Math.floor(12.54));//12.0
System.out.println(Math.floor(-12.34));//-13.0
System.out.println(Math.floor(-12.54));//-13.0
//四舍五入
System.out.println(Math.round(12.34));//12
System.out.println(Math.round(12.54));//13
System.out.println(Math.round(-12.34));//-12
System.out.println(Math.round(-12.54));//-13
//第二个参数尽量传大于等于1的正整数
System.out.println(Math.pow(2,3));//8
System
常见方法
exit:停止虚拟机
//状态码:
//0:表示当前虚拟机是正常停止
//非0:表示非正常停止
System.exit(0);
currentTimeMillis:获取当前时间毫秒值
时间原点:1970年1月1日0:0:0,我国在东八区,有八小时时差
从时间原点算起
System.out.println(System.currentTimeMillis());//返回当前系统的毫秒值形式
arraycopy:拷贝数组
int []arr1={1,2,3,4,5,6,7,8,9};
int []arr2=new int[9];
//参数一:从哪个数组中拷贝
//参数二:从第几个索引开始拷贝
//参数三:要拷贝到哪个数组中
//参数四:目的地数组的索引
//参数五:拷贝的个数
System.arraycopy(arr1,0,arr2,0,9);
注意:
如果数据源和目的数组都是基本数据类型,两者类型必须保持一致,否则会报错
拷贝时超过数组长度也会报错
如果都是引用数据类型(此时拷贝的是地址),那么子类类型可以赋值给父类类型
Runtime
常用方法
代码实现
//1.获取Runtime的对象
Runtime r1 = Runtime.getRuntime();
//2.exit 停止虚拟机
//Runtime.getRuntime().exit(0);
//3.获取cpu的线程
System.out.println(Runtime.getRuntime().availableProcessors());
//4.总内存大小,单位byte字节
System.out.println(Runtime.getRuntime().maxMemory()/1024/1024);
//5.已获取的总内存大小
System.out.println(Runtime.getRuntime().totalMemory()/1024/1024);
//6.剩余内存大小
System.out.println(Runtime.getRuntime().freeMemory()/1024/1024);
//7.运行cmd命令
//shutdown 关机 需要加上参数
//-s默认一分钟后
//-s -t :指定时间关机
//-a:取消关机操作
//-r:关机并重启
Runtime.getRuntime().exec("shutdown -s -t 3600");//在3600秒后关机
Runtime.getRuntime().exec("shutdown -a");//取消
Object和Objects
toString方法
结论:
如果我打印一个对象想看属性值,要重写方法
在重写方法中,把对象的属性值进行拼接
equals方法
结论:
如果没有重写reuais方法,那么默认使用Object中的方法进行比较,比较地址值
一般来说会重写方法,重写后比较的就是对象内部的属性值
String s = "abc";
StringBuffer sb =new StringBuffer("abc");
System.out.println(s.equals(sb));//false
//equals方法是s调用,看String类中的方法
//先判断是否为字符串,再比较内部属性
System.out.println(sb.equals(s));//false
//sb调用,为StringBuffer类,使用的为Object的方法
//比较地址值
对象克隆clone()
默认浅克隆
不管对象内部的属性是基本数据类型还是引用数据类型,都拷贝
深克隆
基本数据类型拷贝 字符串复用 引用数据类型创建新的()需要重写,或者第三方工具
Objects.equals(对象1,对象2);
Student s1 = new Sudent();
Objects.isNull(s1);//判断该对象是不是null,不是返回false
Objects.nonNull(s1);//与isNull相反
Biglnteger和BigDecimal
Biglnteger
代码实现
//1.获取一个随机的大整数
Random r = new Random();
BigInteger bd1 = new BigInteger(4, r);//[0-15]
//2.获取一个指定大的整数
//细节:字符串中必须是整数,否则会报错
BigInteger bg2 = new BigInteger("99999999999");
//3.获取指定进制的大整数(字符串中的数字必须为整数)
BigInteger bg3 = new BigInteger("100",2);
//100转化为2进制 结果为4
//4.静态获取BigInteger对象的方法
//范围比较小,适用于long类型整数
//提前把—16,16创建好了
BigInteger bd5=BigInteger.valueOf(19);
创建对象后,内部的值不能改变
只要进行计算都会产生一个新的BigInteger对象
成员方法
总结
Biglnteger表示一个大的整数
获取对象 静态方法,构造方法
常见操作 加减乘除
BigDecimal
构造方法
//1.通过传递double类型的小数来创建对象
//可能是不精确的,不推荐使用
BigInteger bd1=new BigInteger(0.01);
//2.通过传递字符串来创建
BigInteger bd2=new BigInteger("0.01");
//3.通过静态方法获取对象
BigInteger bd3 =BigInteger.valueOf(10);
//数字如果不大,未超过double类型建议使用静态 否则用构造方法
总结
表示较大的小数和解决小数运算精度失真的问题
获取对象 静态方法,构造方法
常见操作 加减乘除
除:divide(数字,精确几位,舍入模式)
正则表达式
matches(正则表达式)
爬虫
String str = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11," +
"因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";
//1.获取正则表达式的对象
Pattern p = Pattern.compile("Java\\d{0,2}");
//2.获取文本匹配器的对象
//拿着m去读取str,找符合p规则的子串
Matcher m = p.matcher(str);
//3.利用循环获取
while (m.find()) {
String s = m.group();
System.out.println(s);
}
贪婪爬取和非贪婪爬取
注:如果一个方法的形参是regex 那它一定能识别正则表达式
正则表达式在字符串方法中的使用
捕获分组和非捕获分组
1.捕获分组(默认)
可以获取每组中的内容反复使用。
内部使用:\\组号
外部使用:¥组号
2.组号的特点:
从1开始,连续不间断
以在括号为基准,最左边的是第一组
3.非捕获分组:
分组之后不需要再用本组数据,仅仅把数据括起来,不占组号。
(?:正则)捕获所有
(?=正则)捕获前面部分
(?!正则)捕获不是指定内容的前面部分
JDK7以前时间相关类
Date
1、如何创建日期对象?
●Date date = new Date();//获取当前时间
●Date date = new Date(指定毫秒值);
2、如何修改时间对象中的毫秒值
●setTime(毫秒值);
3、如何获取时间对象中的毫秒值
●getime();
SimpleDateFormat
作用:
格式化:把时间变成我们喜欢的格式。
解析:把字符串表示的时间变成Date对象。
指定格式
yyyy年MM月dd日 HH:mm:ss
代码实现
格式化:
//1.利用空参构造创建SimpleDateFormat对象,默认格式
SimpleDateFormat sdf1=new SimpleDateFormat();
Date d1 =new Date(0L);
String str1=sdf1.format(d1);
System.out.println(str1);//70-1-1 上午8:00
//2.利用带参构造创建SimpleDateFormat对象,指定格式
SimpleDateFormat sdf2 = new SimpleDateFormat ("yyyy年MM月dd日HH:mm:ss");
String str2 = sdf2. format(d1);
System. out. println(str2);//1970年01月01日08:00:00
解析:
//1.定义一个字符串表示时间
String str = "2023-11-11 11:11:11";
//2.利用空参构造创建SimpleDateFormat对象
//创建对象的格式要跟字符串的格式完全一致
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);
//3.打印结果
System.out.println(date.getTime());//1699672271000
Calendar
表示一个时间的日历对象
获取对象
通过getInstance方法获取对象
常见方法
setXxx:修改
getXxx:获取
add:在原有的基础.上进行增加或者减少
细节
日历类中月份的范围: 0~11
日历类中星期的特点:星期日是一周中的第一天
JDK8新增的相关类
Date
ZoneId:时区
代码实现
//1.获取所有的时区名称
Set<String> zoneIds = ZoneId.getAvailableZoneIds();//返回集合
System.out.println(zoneIds.size());//6θ0
System.out.println(zoneIds);// Asia/Shanghai
//2.获取当前系统的默认时区
ZoneId zoneId = ZoneId.systemDefault();
System.out.println(zoneId);//Asia/Shanghai
//3.获取指定的时区
ZoneId zoneId1 = ZoneId.of("Asia/Pontianak");
System.out.println(zoneId1);//Asia/ Pontianak
Instant时间戳
ZonedDateTime
带时区的时间
SimpleDateFormat
DateTimeFormatter用于时间的格式化和解析
//获取时间对象
ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
//解析/格式化器
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EE a");
//格式化
System.out.println(dtf1.format(time));
Calendar
工具类
包装类
基本数据类型对应的对象
1. jJDK5以后对包装类新增了什么特性?
自动装箱、自动拆箱
2.我们以后如何获取包装类对象?
不需要new,不需要调用方法,直接赋值即可
Integer成员方法
总结
常用的API还是很多的虽然不需要全部记住
但要花时间去熟悉和了解