API
1 Math类
Math类所在包为java.lang包,因此在使用的时候不需要进行导包。
public static int abs(int a) // 返回参数的绝对值
public static double ceil(double a) // 返回大于或等于参数的最小整数
public static double floor(double a) // 返回小于或等于参数的最大整数
public static int round(float a) // 按照四舍五入返回最接近参数的int类型的值
public static int max(int a,int b) // 获取两个int值中的较大值
public static int min(int a,int b) // 获取两个int值中的较小值
public static double pow (double a,double b)// 计算a的b次幂的值
public static double random() // 返回一个[0.0,1.0)的随机值
2 System类
System类所在包为java.lang包,因此在使用的时候不需要进行导包。
包含系统的常用方法
public static long currentTimeMillis() // 获取当前时间所对应的毫秒值(当前时间为0时区所对应的时间即就是英国格林尼治天文台旧址所在位置)
public static void exit(int status) // 终止当前正在运行的Java虚拟机,0表示正常退出,非零表示异常退出
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); // 进行数值元素copy
3 Runtime
Runtime表示Java中运行时对象,可以获取到程序运行时设计到的一些信息
public static Runtime getRuntime() //当前系统的运行环境对象
public void exit(int status) //停止虚拟机
public int availableProcessors() //获得CPU的线程数
public long maxMemory() //JVM能从系统中获取总内存大小(单位byte)
public long totalMemory() //JVM已经从系统中获取总内存大小(单位byte)
public long freeMemory() //JVM剩余内存大小(单位byte)
public Process exec(String command) //运行cmd命令
4 Object类
Object类所在包是java.lang包。Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接的继承自该类;换句话说,该类所具备的方法,其他所有类都继承了。
public String toString() //返回该对象的字符串表示形式(可以看做是对象的内存地址值)
public boolean equals(Object obj)//比较两个对象地址值是否相等;true表示相同,false表示不相同
protected Object clone() //对象克隆
5 Objects类
Objects类所在包是在java.util包下,因此在使用的时候需要进行导包。并且Objects类是被final修饰的,因此该类不能被继承。
Objects类提供了一些对象常见操作的方法。比如判断对象是否相等,判断对象是否为null等等。
Objects类中无无参构造方法,因此不能使用new关键字去创建Objects的对象。
Objects类中所提供的方法都是静态的。因此通过类名直接去调用这些方法。
public static String toString(Object o) // 获取对象的字符串表现形式
public static boolean equals(Object a, Object b) // 比较两个对象是否相等
public static boolean isNull(Object obj) // 判断对象是否为null
public static boolean nonNull(Object obj) // 判断对象是否不为null
// 检查对象是否不为null,如果为null直接抛出异常;如果不是null返回该对象;
public static <T> T requireNonNull(T obj)
// 检查对象是否不为null,如果不为null,返回该对象;如果为null返回defaultObj值
public static <T> T requireNonNullElse(T obj, T defaultObj)
// 检查对象是否不为null,如果不为null,返回该对象;如果 // 为null,返回由Supplier所提供的值
public static <T> T requireNonNullElseGet(T obj, Supplier<? extends T> supplier)
上述方法中的T可以理解为是Object类型。
6 BigInteger类
BigInteger所在包是在java.math包下,因此在使用的时候就需要进行导包。
可以使用BigInteger类进行大整数的计算。
//构造方法
public BigInteger(int num, Random rnd) //获取随机大整数,范围:[0 ~ 2的num次方-1]
public BigInteger(String val) //获取指定的大整数
public BigInteger(String val, int radix) //获取指定进制的大整数
//下面这个不是构造,而是一个静态方法获取BigInteger对象
public static BigInteger valueOf(long val) //静态方法获取BigInteger的对象,内部有优化
//成员方法
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) //除法,获取商和余数
public boolean equals(Object x) //比较是否相同
public BigInteger pow(int exponent) //次幂、次方
public BigInteger max/min(BigInteger val) //返回较大值/较小值
public int intValue(BigInteger val) //转为int类型整数,超出范围数据有误
- 如果BigInteger表示的数字没有超出long的范围,可以用静态方法获取。
- 如果BigInteger表示的超出long的范围,可以用构造方法获取。
- 对象一旦创建,BigInteger内部记录的值不能发生改变。
- 只要进行计算都会产生一个新的BigInteger对象
7 BigDecimal类
BigDecimal所在包是在java.math包下,因此在使用的时候就需要进行导包。
使用BigDecimal类进行更加精准的数据计算。
public BigDecimal add(BigDecimal value) // 加法运算
public BigDecimal subtract(BigDecimal value) // 减法运算
public BigDecimal multiply(BigDecimal value) // 乘法运算
public BigDecimal divide(BigDecimal value) // 触发运算
8 正则表达式
用于验证一些字符串,例如:年龄必须是2位的数字、用户名必须是8位长度而且只能包含大小写字母、数字等。正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则,我们可以验证用户输入的字符串是否匹配这个规则。
字符类
- [abc]:代表a或者b,或者c字符中的一个。
- [^abc]:代表除a,b,c以外的任何字符。
- [a-z]:代表a-z的所有小写字符中的一个。
- [A-Z]:代表A-Z的所有大写字符中的一个。
- [0-9]:代表0-9之间的某一个数字字符。
- [a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符。
- [a-dm-p]:a 到 d 或 m 到 p之间的任意一个字符。
逻辑运算符
- &&:并且
- | :或者
- \ :转义字符
预定义字符
- “.” : 匹配任何字符。
- “\d”:任何数字[0-9]的简写;
- “\D”:任何非数字[^0-9]的简写;
- “\s”: 空白字符:[ \t\n\x0B\f\r] 的简写
- “\S”: 非空白字符:[^\s] 的简写
- “\w”:单词字符:[a-zA-Z_0-9]的简写
- “\W”:非单词字符:[^\w]
在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。
System.out.print("\\"); // 输出为 \
System.out.print("\\\\"); // 输出为 \\
量词
- x{n} 约定左侧x出现n次
- x{n,m} 规定左侧x出现最少n次,最多m次
- x{0,n} 规定左侧x出现0到n次
- x{n,} 规定左侧x出现最少n次
- x? 和x{0,1}等价,x可以没有或者有一个
- x+ 和x{1,}等价,x至少有1个,多了随意,简称:一个以上
- x* 和x{0}等价,x至少有0个,多了随意,简称:0个以上
分组括号( )
将一组规则作为整体进行处理
(red|blue|green):匹配red或者blue或者green;
String支持正则表达式的方法
split():将当前字符串按照满足正则表达式的部分进行拆分
replaceAll():将当前字符串中满足正则表达式的部分替换为给定的字符串
matches():使用给定的正则表达式验证当前字符串的格式是否符合要求
public static void main(String[] args) {
String line = "abc123drf456ghi";
String[] data = line.split("[0-9]+");//按数字拆分,拆分后数字没了
// for(int i=0;i<data.length;i++){
// System.out.println(data[i]);
// }
System.out.println(Arrays.toString(data));//转换为字符串并输出
line = "123.456.78";
data =line.split("\\.");
System.out.println(Arrays.toString(data));
}
[abc, drf, ghi]
[123, 456, 78]
public static void main(String[] args) {
String line ="abc123drf456ghi78";
line = line.replaceAll("[0-9]+", "#NUMBER#");//有+直接替换
System.out.println(line);
//GD-----*****
}
abc#NUMBER#drf#NUMBER#ghi#NUMBER#
public static void main(String[] args) {
/*
邮箱正则表达式:
[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+
注意:
\.中的\是正则表达式中的转义字符
\\.中的第1个\,是java中的转义字符,是在转义正则表达式中的\
*/
String email = "njl159344465555@163.com";
String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
//使用regex匹配email是否符合格式要求
boolean match = email.matches(regex);
if(match){
System.out.println("是正确的邮箱格式");
}else{
System.out.println("不是正确的邮箱格式");
}
}
9 Date
Date类
java.util.Date
类 表示特定的瞬间,精确到毫秒。public long getTime()
把日期对象转换成对应的时间毫秒值。public void setTime(long time)
把方法参数给定的毫秒值设置给日期对象
SimpleDateFormat类
java.text.SimpleDateFormat
是日期/时间格式化类,可以在Date对象与String对象之间进行来回转换。public SimpleDateFormat(String pattern)
:用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。参数pattern是一个字符串,代表日期时间的自定义格式。
DateFormat类
public String format(Date date)
:将Date对象格式化为字符串。public Date parse(String source)
:将字符串解析为Date对象。- DateFormat可以将Date对象和字符串相互转换。
Calendar类
java.util.Calendar
类表示一个“日历类”,可以进行日期运算。它是一个抽象类,不能创建对象,我们可以使用它的子类:java.util.GregorianCalendar
类。- 有两种方式可以获取
GregorianCalendar
对象:- 直接创建
GregorianCalendar
对象; - 通过Calendar的静态方法
getInstance()
方法获取GregorianCalendar对象
- 直接创建
JDK8时间相关类
10 包装类
方法
基本类型 | 对应的包装类(位于java.lang包中) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Integer方法名 | 说明 |
---|---|
public Integer(int value) | 根据 int 值创建 Integer 对象(过时) |
public Integer(String s) | 根据 String 值创建 Integer 对象(过时) |
public static Integer valueOf(int i) | 返回表示指定的 int 值的 Integer 实例 |
public static Integer valueOf(String s) | 返回保存指定String值的 Integer 对象 |
static string tobinarystring(int i) | 得到二进制 |
static string tooctalstring(int i) | 得到八进制 |
static string toHexstring(int i) | 得到十六进制 |
static int parseInt(string s) | 将字符串类型的整数转成int类型的整数 |
- 装箱:从基本类型转换为对应的包装类对象。
- 拆箱:从包装类对象转换为对应的基本类型。
基本类型转换为String
- 方式一:直接在数字后加一个空字符串
- 方式二:通过String类静态方法valueOf()
String转换成基本类型
public static byte parseByte(String s)
:将字符串参数转换为对应的byte基本类型。public static short parseShort(String s)
:将字符串参数转换为对应的short基本类型。public static int parseInt(String s)
:将字符串参数转换为对应的int基本类型。public static long parseLong(String s)
:将字符串参数转换为对应的long基本类型。public static float parseFloat(String s)
:将字符串参数转换为对应的float基本类型。public static double parseDouble(String s)
:将字符串参数转换为对应的double基本类型。public static boolean parseBoolean(String s)
:将字符串参数转换为对应的boolean基本类型。
11 Lambda表达式
作用:简化代码
- 一、 不是任何匿名内部类都可以转换为Lambda表达式
- Lambda表达式对接口的要求:只能是函数式接口
- 函数式接口:接口中要求实现类必须重写的方法只有一个
- 二、 Lambda表达式中的参数类型可以不写
- 三、 Lambda表达式中中方法体只有一句代码,{}可以不写,如果有return,也一并不写
- 四、 Lambda表达式的方法参数只有1个,那么()可以忽略不写
- (参数列表)->{
方法体
}
public class LambdaDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
//匿名内部类写法
Collections.sort(list, new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
});
//Lambda表达式写法
Collections.sort(list, (String o1, String o2) -> {
return o1.length()-o2.length();
});
//Lambda表达式中的参数类型可以不写
Collections.sort(list, (o1, o2) -> {
return o1.length()-o2.length();
});
//Lambda表达式方法体中只有一句代码,方法体的{}可以不写,如果这句话中有return,也一并不写
Collections.sort(list, (o1, o2) -> o1.length()-o2.length());
//Lambda表达式的方法参数只有1个,那么()可以忽略不写---本案例不适用
}
}