一.Arrays 工具类
Arrays是一个针对数组的工具,其中的方法都是针对数组使用.
异常处理: 如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException
Arrays的常用方法
public static String toString(int[] a) | 可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...]) |
public static void sort(int[] a) | 对指定的 int 型数组按数字升序进行排序 |
public static int binarySearch(int[] a,int key) | 二分搜索法: 在int类型的数组中查找key元素的索引 |
注意事项:在Arrays.binarySearch使用时,要先对数组a进行排序,因为二分法搜索搜索的升序数组(可以用Arrays.sort提前对数组进行升序排序)
package day11; import java.util.Arrays; public class Array { public static void main(String[] args) { int[] a = { 12, 11, 56, 34, 89, 26 }; System.out.println(Arrays.binarySearch(a, 11)); //输出为-1 System.out.println("------------------------"); Arrays.sort(a); System.out.println(Arrays.binarySearch(a, 11)); //输出为 0 } }
二.Calendar 类
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
理解:Calendar类是获取此时此刻的时间的毫秒值,(格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000)通过取到的毫秒值和标准时间的差值再通过时间单位的划算,就能得到现在的时间和日期
Calendar是一个抽象类,所以无法被继承,实现该抽象类的方法
1.导包,导包后才能使用该类的方法(暂时理解可以使用,但实际无对象,不能使用)
2.创建该类对象Calendar now = Calendar.getInstance(); 先通过调用getInstance方法,获取日历,在用Calendar接受,起名为now(类似于多肽和链式编程结合来创建对象)
Calendar的常用方法
public int get(int field) | 返回给定日历字段的值 |
public abstract void add(int field,int amount) | 根据日历的规则,为给定的日历字段添加或减去指定的时间量 |
public final void set(int year, int month,int date) | 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值 |
package day11; import java.util.Calendar; //日历类 public class Calendar1 { public static void main(String[] args) { Calendar ca=Calendar.getInstance(); // System.out.println(ca); int year=ca.get(Calendar.YEAR); System.out.println(year); int month=ca.get(Calendar.MONTH); System.out.println(month); int day=ca.get(Calendar.DATE); System.out.println(day); System.out.println(year+"/"+(month+1)+"/"+day); System.out.println("---------------------"); //一年2个月15天后(日期前带负号) ca.add(Calendar.YEAR, 1); year=ca.get(Calendar.YEAR); ca.add(Calendar.MONTH, 2); month=ca.get(Calendar.MONTH); ca.add(Calendar.DATE, 15); day=ca.get(Calendar.DATE); System.out.println(year+"/"+(month+1)+"/"+day); //自定义日期 ca.set(2008, 8, 8); year=ca.get(Calendar.YEAR); month=ca.get(Calendar.MONTH); day=ca.get(Calendar.DATE); System.out.println(year+"/"+month+"/"+day); } }
输出结果:
2018 4 3 2018/5/3 --------------------- 2019/7/18 2008/8/8
注意:Calendar中的get月份时,月份是从0月开始,所以要手动加1,但是在自定义时间是不需要
如果对时间进行的增删或者自定义,都要用get方法收集一次时间后在使用,如不收集则时间依然是原来时间
三.System 类
System常用的方法
public static void gc() | 运行垃圾回收器 |
public static void exit(int status) | 终止当前正在运行的 Java 虚拟机。参数用作状态码; 一般情况,需要终止Jvm,那么参数0 |
public static long currentTimeMillis() | 返回以毫秒为单位的当前时间 |
public static void arraycopy (Object src,int srcPos, Object dest,int destPos, int length) |
从指定源数组中复制一个数组,复制从指定的位置开始, 到目标数组的指定位置结束 |
System.gc()运行垃圾回收器来回收不用的数据,其内部用的是finalize方法,
System.exit()终止jam虚拟机,int status,为状态码,如果要终止虚拟机,则为0
System.currentTimeMillis() 获取当前的毫秒值,(既为于标准时间的差值)
System.arraycopy :参数名词解释
src:原数组
dest:目标数组
srcPos :从原数组的哪个位置开始
destPos:到目标数组的哪个位置结束
length:长度
四.Date 类
Date的构造方法
public Date() | 表示分配它的时间(精确到毫秒) |
public Date(long date) | 创建一个日期对象,指定毫秒值(将long数据转化为Date对象) |
package day11; import java.util.Date; public class date { public static void main(String[] args) { Date d=new Date(); long l=d.getTime(); long l1=System.currentTimeMillis(); System.out.println(l); System.out.println(l1);
输出1525348558918
1525348558918
则Date中的getTime()于System.currentTimeMillis();方法同类似,一个通过建立Date时间类,在获取当前Date类下的毫秒值,一个是直接返回以毫秒为单位的当前时间,两个结果一样,但是过程不一样
重点:Date的日期格式和日期的文本格式:String类型 之间进行转换(Date---->String(格式化))
1.先引入DateFormat类,但是该类是抽象类,则应用该类子实现类SimpleDateFormat,是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpelDateFormat的构造方法:
public SimpleDateFormat(String pattern) :构造一个SimpleDateFormat对象,根据pattern规则
package day11; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Date2 { public static void main(String[] args) throws ParseException { //创建Date对象,输出Date当前时间 Date d=new Date(); System.out.println(d); //创建键盘录入对象,用string类型接收 System.out.println("输入日期:"); Scanner sc=new Scanner(System.in); String str=sc.nextLine(); //创建SimpleDateFormat对象,且设定规则,通过sdf.parse()方法解析同时和设定的规则比较 //在解析的同时要抛出异常,因为可能可是不匹配,最后输出该系统时间 SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd"); Date d1=sdf.parse(str); System.out.println(d1); } }
五.Math 类
常用的方法:
public static int abs(int a): 绝对值
public static double ceil(double a): 向上取整
public static double floor(double a): 向下取整
public static int max(int a,int b): 求最大值
public static int min(int a,int b): 求最小值
public static double pow(double a,double b): a的b次幂
public static double random() 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0
public static int round(float a): 四射五入
public static double sqrt(double a): 一个数的正平方根
六.Random类
Random:是一个可以获取随机数的类
public Random() | 无参构造 |
---|---|
public Random(long seed) | 指定long类型的数据进行构造随机数类对象 |
Random方法
public int nextInt() | 获取随机数,它的范围是在int类型范围之内 |
public int nextInt(int n) | 获取随机数,它的范围是在[0,n)之间 |
package day11; import java.util.Random; public class Random1 { public static void main(String[] args) { Random r=new Random(); System.out.println(r.nextInt()); //获取int范围之内的任意只 System.out.println(r.nextInt(5)); //获取[0-5)之间的任意一值 } }
七.正则表达式
正则表达式基础语法
字符
x x字符 \\ 反斜线字符 \t 制表符 \n 换行符 \r 回车符 |
字符类:
[abc] a、b 或 c(简单类) [^abc] 任何字符,除了 a、b 或 c(否定) [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
预定义字符类:
. 任何字符 ,如果本身就是 \. eg:qq.com 写正则表达式(\\.) \d 数字:[0-9] 本身: 写正则表达式 :\\d \w 单词字符:[a-zA-Z_0-9]:字母大小写,数字字符 本身:\\w |
边界匹配器:
^ 行的开头 $ 行的结尾 \b 单词边界 尾 |
Greedy 数量词(重点)
X? X,一次或一次也没有 X* X,零次或多次 X+ X,一次或多次 X{n} X字符恰好出现n次 X{n,} X字符至少出现n次 X{n,m} X字符至少出现n次,但不超过m次 |