文章目录
Java API
包括正则表达式简介、常见的正则表达式、正则表达式方法(split、replace、matches)、包装类概述、拆装箱、常用方法(MAX_VALUE、MIN_VALUE、parseInt parseDouble、toBinaryString、toHexString)、BigDecimal类、BigInteger类。
一、正则表示式
1.1、正则表达式简介
1)开发中,需要对字符串数据进行一些复杂的匹配、查找、替换等操作。通过“正则表达式”,可以方便的实现字符串的复杂操作
2)正则表达式是一串特定的字符。如:“[a-z]”表示a到z的之间的任意一个字符
1.2、常见的正则表达式
常见的正则表达式(1)
正则表达式 | 说明 |
---|---|
[abc] | a、b、c中的任意一个字符 |
[^abc] | 除a、b、c外的任意字符 |
[a-z] | a~z中的任意一个字符 |
[a-zA-Z0-9] | a~z、A~Z、0~9中的任意一个字符 |
[a-z&&[^bc]] | a~z中除了b、c之外的任意一个字符,&&表示“与”的关系 |
常见的正则表达式(2)
正则表达式 | 说明 |
---|---|
. | 任意一个字符 |
\d | 任意一个数字字符,相当于[0~9] |
\D | 任意一个非数字字符,相当于[^0~9] |
\s | 空白字符,相当于[\t\n\xOB\f\r] |
\S | 非空白字符,相当于[^\s] |
\w | 任意一个单词字符,相当于[a-zA-Z0-9] |
\W | 任意一个非单词字符,相当于[^\w] |
常见的正则表达式(3)
正则表达式 | 说明 |
---|---|
X? | 表示0个或1个X |
X* | 表示0个或任意多个X |
X+ | 表示0个或任意多个X(大于等于1个X) |
X{n} | 表示n个X |
X{n,} | 表示n个到任意多个X(大于等于n个X) |
X{n,m} | 表示n个到m个X(大于等于n个且小于m个X) |
1.3、正则表达式方法
(1)、split
1) String[] split(String regex):参数regex为正则表达式
2)将当前字符串按照满足正则表达式的部分进行拆分,返回拆分后的每段内容
import java.util.Arrays;
public class Test {
public static void main(String[] ages){
String str = "pp123qwe456asd789zxc999999999i";
String[] arr = str.split("[0-9]+"); //任意个0-9之间的字符
System.out.println(Arrays.toString(arr)); //用字符串表示数组,结果为[pp, qwe, asd, zxc, i]
}
}
(2)、replace
1)String replaceAll(String regex,String str):参数regex为正则表达式;str为替换的字符串内容
2)将当前字符串满足正则表达式的部分替换为给定的字符串
public class StringReplaceAllDemo {
public static void main(String[] args) {
String str = "pp123qwe456asd789zxc";
String newStr = str.replaceAll("\\b+","#NUMBER#"); //两个\,有一个代表转义
System.out.println(newStr); //结果为#NUMBER#pp123qwe456asd789zxc#NUMBER#
}
}
(3)、matches
1)boolean matches(String regex):参数regex为正则表达式
2)根据给定的正则表达式验证当前字符串是否满足格式要求,满足则返回true,否则返回false
public class StringMatchesDemo {
public static void main(String[] args) {
//电子邮箱的正则表达式:[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9]+)+
//java中\\\\代表“\\”
String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9]+)+"; //\.在java中,\代表进行转义,但在java中.不需要转义没有特殊含义,所以在\.前加个\,代表只是个\.
System.out.println(regex);
String mile = "ewrfw@dsaf.cd";
boolean flag = mile.matches(regex);
System.out.println(flag);
}
}
经典案例:验证手机号格式
二、基本类型包装类
2.1、包装类概述
java语言的8种基本类型分别对应了8种“包装类”,每一种包装类都封装了一个对应的基本类型成员变量,同时还提供了一些针对该数据类型的实用方法
包装类 | 对应的基本类型 |
---|---|
java.lang.Integer | int |
java.lang.Long | long |
java.lang.Double | double |
java.lang.Character | char |
java.lang.Boolean | boolean |
java.lang.Byte | byte |
java.lang.Float | float |
java.lang.Short | short |
2.2、拆装箱
1)JDK 5发布之前,使用包装类对象进行运算时,需要进行“拆箱”和“装箱”操作。即运算前先包装类对象所封装的基本类型数据,运算后再将结果封装成包装类对象
Integer i = Integer.valueOf(100);
Integer j = Integer.valueOf(100);
Integer k = Integer.valueOf(i.intValue()+j.intValue());
2)JDK 5之后推出了一个新的特征:自动拆装箱
3)自动拆装箱是编译器认可,而不是虚拟机认可
4)编译器在将源程序编译时自动补充代码来完成基本类型与包装类之间的转换
下面代码触发了自动拆箱,在class文件中,下面代码被编译器改为:
Integer i1 = 123; //编译前
Integer i1 = Integer.valueOf(123); //编译后
2.3、常用方法
Integer和Double的常用方法
(1)、MAX_VALUE
MAX_VALUE:返回类型的最大值
System.out.println(Integer.MAX_VALUE); //2147483647
System.out.println(Double.MAX_VALUE); //1.7976931348623157E308
(2)、MIN_VALUE
MIN_VALUE:返回类型的最小值
System.out.println(Integer.MIN_VALUE); //-2147483648
System.out.println(Double.MIN_VALUE); //4.9E-324
(3)、parseInt parseDouble
1)包装类提供的静态方法parseInt(String str)、parseDouble(String str)
2)parseInt和parseDouble方法可以将给定的字符串转换为对应的基本类型
String str = “123”;
int i = Integer.parseInt(str);
System.out.println(i+1); //124
double d = Double.parseDouble(str);
System.out.println(d+1); //124.0
3)如何字符串无法解析为数值将抛出NumberFormatException
String str = “123.123”;
int i = Integer.parseInt(str); //数字格式异常:NumberFormatException
(4)、toBinaryString
String toBinaryString(int i)方法将int数据转换为二进制的字符串序列
String bstr = Integer.toBinaryString(100); //1100100
(5)、toHexString
String toHexString(int i)方法将int数据转换为十六进制的字符串序列
String hstr = Integer.toHexString(100); //64
2.4、BigDecimal类
1)java浮点数据类型(float和double)在运算时会有舍入误差。进行精度计算时,可以使用import java.math.BigDecimal类
2)常用方法:add(加)、subtract(减)、multiply(乘)、divide(除)
BigDecimal b1 = new BigDecimal(“3.0”);
BigDecimal b2 = new BigDecimal(“2.9”);
BigDecimal a = b1.add(b2); //5.9
BigDecimal s = b1.subtract(b2); //0.1
BigDecimal m = b1.multiply(b2); //8.70
BigDecimal d = b1.divide(b2); //ArithmeticException
3)对于divide方法,通常需要制定精度和舍入模式,否则遇到无限小数时,会抛异常ArithmeticException
BigDecimal d1 = b1.divide(b2,6,BigDecimal.ROUND_HALF_UP); //1.034483
6:表示保留六为小数;ROUND_HALF_UP表示四舍五入
2.5、BigInteger类
1)java提供的整数类型(int和long)的存储范围有限,当需要进行很大的整数运算时可以使用import java.math.BigInteger类
2)理论上讲BigInteger的存储范围只受内存容量的限制
public class Test {
public static void main(String[] ages){
BigInteger sum = BigInteger.valueOf(1);
for(int i=1;i<200;i++){
sum = sum.multiply(BigInteger.valueOf(i));
}
System.out.println(sum.toString().length()); //373
System.out.println(sum);
}
}