一、Arrays类
(1)数组工具类,由sun公司提供的官方文档中已经声明的类(底层已经实现了一些功能:java开发者只是纯粹的调用就可以了)
(2)常用方法:
publicstatic String toString(int[] a):将数组转换成字符串
publicstatic void sort(int[] a):将int类型的数组进行排序(升序),底层是一种快速排序法
publicstatic int binarySearch(int[] a,int key):二分查找法
二、BigDecimal类
(1)由于float类型以及double类型:浮点类型在存储数据的时候和整数类型是不一样的,存储的是有效位数字,浮点类型容易损失精度,导致数据的不精确,针对这种情况,java就提供了BigDeicmal类:(作用:运算数据的时候更加精确)
(2)构造方法:
public BigDecimal(String val)
(3)成员方法:
①public BigDecimal add(BigDecimal augend):加
②public BigDecimal subtract(BigDecimal subtrahend):减
③public BigDecimal multiply(BigDecimal multiplicand):乘
④public BigDecimal divide(BigDecimal divisor):除
⑤public BigDecimal divide(BigDecimaldivisor,int scale,RoundingMode,roundingMode)参数1:表示除数 参数2:取的有效数字 参数3:舍入的一种模式
三、BigInteger类
(1)用来计算超出int范围的数据的运算
(2)常用的构造方法:
public BigInteger(String val):以字符串的形式表现一个十进制数据
(3)常用的方法:
①public BigInteger add(BigInteger val):加
②public BigInteger subtract(BigInteger val):减
③public BigInteger multiply(BigInteger val):乘
④public BigInteger divide(BigInteger val):除
⑤public BigInteger[]divideAndRemainder(BigInteger val):返回的是数组(商和余数)
应用举例:
BigIntegerb1 = new BigInteger("100");
BigIntegerb2 = new BigInteger("50");
BigInteger[]bi = b1.divideAndRemainder(b2);
System.out.println("bi[0]:"+bi[0]);//2
System.out.println("bi[0]:"+bi[1]);//0
四、System类
(1)概述:System类包含一些有用的类字段和方法。它不能被实例化。
创建键盘录入对象:
Scannersc = new Scanner(System.in);
InputStream(字节输入流) is = System.in ; //抽象类的多态形式
System.out.println();输出语句
System.out:标准输出流返回的是一个打印输出流:PrintStream------>对象.println()
(2)常用的方法:
public static void gc():运行垃圾回收器,最终调用的是finalize()方法
final,finalize,finally(异常类的时候讲它:是用来释放资源的)的区别?(重点)
①final:最终的,无法更该的,可以修饰类,成员变量,成员方法。
修饰类,该类不能被继承
修饰成员方法,该方法不能被重写
修饰成员变量,该变量是常量,属于自定义常量
②fianlize:和垃圾回收器有关系,当内存中存在不用的对象的时候,启用gc()运行垃圾回收器去回收对象,释放资源,最终调用的还是finalize()(在自定义的类中一定要写Object中的方法)
(3)其他方法:
public static void exit(int status):表示终止当前正在运行的java虚拟机,非0状态,表示异常终止,一般情况:参数为0
举例:System.out.println("我喜欢运动....");
System.exit(0) ;//应用场景:也会用在循环语句中
System.out.println("我也喜欢音乐....");
运行结果:我喜欢运动....
public static long currentTimeMillis():返回以毫秒为单位的当前时间
单独使用,非常少,一般用在记录耗时的操作:循环语句
(4)常用方法:复制数组
public static void arraycopy(Object src,int srcPos, Object dest, int destPos,int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
举例:int[] arr ={11,22,33,44,55} ;
int[] arr2 = {6,7,8,9,10} ;
System.arraycopy(arr, 1,arr2, 2, 2);
System.out.println("arr:"+Arrays.toString(arr));
System.out.println("arr2:"+Arrays.toString(arr2));
运行结果:arr:[11, 22, 33, 44, 55]
arr2:[6, 7, 22, 33, 10]
五、Calendar类
(1)日历类,Calendar类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法
瞬间指定的是一个毫秒值
(2)由于Calendar是抽象类:
public static CalendargetInstance():通过这个方法进行实例化:抽象类多态
public int get(int field):返回给定日历字段的值
(3)字段:
publicstatic final int YEAR:年份
publicstatic final int MONTH:在格里高利历和罗马儒略历中一年中的第一个月是JANUARY
,它为 0;最后一个月取决于一年中的月份数。
publicstatic final int DATE:月份中的某天
(4)和日历有关的添加的方法:
publicabstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量
publicvoid set(int field, int value)将给定的日历字段设置为给定值
(5)程序测试:获取任意一年的二月有多少天,使用键盘录入改进
importjava.util.Calendar;
importjava.util.Scanner;
publicclass CalendarTest {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//录入并接收数据
System.out.println("请输入一个年份:");
int year = sc.nextInt() ;
//创建日历类对象
Calendar c = Calendar.getInstance() ;
//去给日历对象设置日历时间
c.set(year, 2, 1);//其实3月1日
//在使用add指定时间量,往前推一天
c.add(Calendar.DATE, -1) ;
//输出即可
System.out.println(c.get(Calendar.DATE));
}
}
六、Date类
(1)日期类,表示特定的瞬间,精确到毫秒。
(2)构造方法:
public Date():空参构造(使用这个获取系统当前的日期时间)
public Date(long date):指定一个时间毫秒值
(3)两个常用的成员方法:
public long getTime():获取自1970年1月1日的表示Date对象的一个毫秒数
public void setTime(long time):指定一个毫秒数
如果用Date对象获取时间毫秒值getTime():获取当前的时间毫秒值,一般用System.currentTimeMillis(),替换掉它
如果给Date对象指定一个毫秒值时间用:setTime()
(4)Date(Date对象)和String(日期的字符串类型)类型的相互转换(重点)
①Date---->String:格式化(也就是日期 ->文本)
DateFormat类:但是该类是一个抽象类,不能直接实例化,所以不能直接使用它进行中间桥梁的转换!就用DateFormat的子类:SimpleDateFormat:格式化和解析日期或者解析时间的具体类;
SimpleDateFormat类:
两个构造方法;
publicSimpleDateFormat():无参构造:使用默认的模式构造一个对象
publicSimpleDateFormat(String pattern):将一个 Date格式化为日期/时间字符串指定一种模式;可以写xxx年xx月xx日 、 xxxx-xx-xx
方法(继承自DateFormat类):
publicfinal String format(Date date):将一个 Date格式化为日期/时间字符串。
②String(字符串的日期/时间的表现形式)---->Date对象:解析(文本->日期)
使用SimpleDateFormat类的另一个方法:(继承自DateFormat类)
publicDate parse(String source):该方法会抛出一个异常:解析异常:parseException
这个转换里面的字符串的内容必须和模式的内容一致,否则抛异常!
【日期和时间模式】
年: y 例如:2017 yyyy
年中的月份: M 8,11 MM
月份中的天数: d 24,25 dd
小时: H HH
分钟数 : m mm
秒数 s ss
七、Math类
(1)该类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数
(2)字段:
publicstatic final double E
publicstatic final double PI
(3)常用的成员方法:
①publicstatic int abs(int a):绝对值
②publicstatic double ceil(double a):向上取整(重点)
③publicstatic double floor(double a):向下取整
④publicstatic double pow(double a,double b):a的b次幂
⑤publicstatic double random():获取一个随机数:[0.0,1.0)(重点)
⑥publicstatic long round(double a):四舍五入,取整(重点)
⑦publicstatic int max(int a, int b):取最大值
⑧publicstatic double sqrt(double a):正平方根
八、Random类
(1)表示产生一个随机的类:
(2)构造方法:
publicRandom():无参构造,创建一个产生随机数的类对象,就是用构造形式
publicvoid setSeed(long seed):指定一个种子,这个种子(时间的毫秒值)
(3)成员方法:(重要)
nextInt():产生的随机数的范围在int类型的范围之内
nextInt(intn):删除的随机的范围在[0,n),能包括0不包括n这数据
九、正则表达式
常见的语法:
A:字符
x字符 举例:a代表'a'
\\ 反斜线字符 代码中:两个反斜线表示一个反斜线
\t 制表符
\n 新行(换行)符
\r 回车符
B:字符类
[abc] a、b或 c
[^abc] 任何字符,除了 a、b或 c(否定)
[a-zA-Z] a到 z或 A 到 Z,两头的字母包括在内(范围)
C:预定义字符类
. 如果本身表示的就是一个.,怎么办? \.:表示点(代码中写正则表达式的时候:\\.)
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9] :举例邮箱zhangsan_isSone123456@163.com
D:边界匹配器
\b 单词边界:hello;world;haha;Xixi
^ 以什么开头 ^0 :表示以0开头
$ 以什么结尾
E:Greedy数量词(重点)
X?,x出现1次或者0次
X*,x出现了0次或多次
x+,x出现了1次或多次
x{n}:x恰好出现n次
x{n,}:x至少出现了n次
x{n,m}:x至少n次,不超过m次