API:
bigdecima:
方法名 说明
public static BigDecimal valueof( double val) 静态获取对象
public BigDecimal add(BigDecimal val) 加法
public BigDecimal subtract(BigDecimal val) 减法
public BigDecimal multiply(BigDecimal val) 乘法
public BigDecimal divide(BigDecimal val) 除法
public BigDecimal divide(BigDecimal val,精确几位,舍入模式)除法 (就是除不尽就是这个)
public static void main(String[] args) {
//1.通过传递double类型的小数来创建对象
BigDecimal bd1 = new BigDecimal(0.01);
BigDecimal bd2 = new BigDecimal(0.09);
System.out.println(bd1); //这样子结果输出是不精确的
System.out.println(bd2);
//2.通过传递字符串表示的小数来创建对象
BigDecimal bd3 = new BigDecimal("0.01");
BigDecimal bd4 = new BigDecimal("0.09");
System.out.println(bd3); //这样子就精确了
System.out.println(bd4);
//3.相加
BigDecimal bd5 = bd3.add(bd4);
System.out.println(bd5);
BigDecimal bd6 = new BigDecimal(10);
BigDecimal bd7 = new BigDecimal(3);
BigDecimal bd8 = bd6.divide(bd7,2, RoundingMode.HALF_UP); //第二个是精确的小数位,第三个是模式(四舍五入)
System.out.println(bd8);
}
输出结果:
biginteger:
public BigInteger(int num,Random rnd) 获取随机大整数,范围:[ ~ 2的num次方-1]
public BigInteger(string val) 获取指定的大整数
public BigInteger(string val, int radix) 获取指定进制的大整数
静态方法:public static BigIntegervalueOf(long val) 静态方法获取BigInteger的对象,内部有优化
静态:(对象一旦创建,内部记录的值不能发生改变)
public static void main(String[] args) {
//随机创建一个大整数
BigInteger bd1 = new BigInteger(3,new Random()); //0----2^3-1
System.out.println(bd1);
//获取一个指定的大整数
BigInteger bd2 = new BigInteger("100");
System.out.println(bd2);
//获取指定进制的大整数
BigInteger bd3 = new BigInteger("1000",8); //把1000(八进制)划成10进制
System.out.println(bd3);
}
正则表达式:
正则表达式的作用:
作用一:校验字符串是否满足规则
作用二: 在一段文本中查找满足要求的内容(爬虫)
字符类(只匹配一个字符)
方括号:[]:表示一个范围,出现的字符一定要在这个范围之内
例:[abc]:表示字符串里只能出现abc(而且只能出现一个:前缀只能
[^abc]:表示除abc之外的任何字符
[a-zA-Z]:a-z,A-Z都可以
[a-d[A-X]]:a-d或者A-X (和上面的一样吧)
[a-z&&def]:a-z,def取交集:def
[a-z&&[^bc]]:a-z和非bc的交集
[a-z&&[^m-p]]:a-z除了m-p的交集
预定义字符(只匹配一个字符)
.:(点)表示匹配任意字符
\d:表示一个数字:[0-9]
\D:表示非数字:[^0-9]
\s:表示一个空白字符:[\t\n\x0B\f\r]
\S:表示非空白字符:[^\s]
\w:表示在这些范围([a-zA-Z_0-9])任取一个(英文字符,数
\W:[^\w]
数量词
X?: X,一次或0次
X*: X,零次或多次
X+: X,一次或多次
X{n}: X,正好n次
X{n,}: X,至少n次
X{n,m}: X,至少n次但不超过m次
"(?i)abc" :abc可忽略大小写
"a(?i)bc" :bc可忽略大小写
public static void main(String[] args) {
//字符类
System.out.println("a".matches("[abc]"));
//System.out.println("ab".matches("[abc]")); 这种时候是false:因为括号中的abc只能出现一次而ab是两个
//如果想让它正确可以这样:System.out.println("ab".matches("[abc][abc]"));
System.out.println("-----------------------------");
System.out.println("a".matches("[^abc]"));
System.out.println("z".matches("[^abc]"));
System.out.println("-----------------------------");
System.out.println("aJ".matches("[a-zA-Z][a-zA-Z]"));
System.out.println("aJ".matches("[a-zA-F][a-zA-F]"));
System.out.println("-----------------------------");
System.out.println("f".matches("[abcdef&&[abcde]]"));
System.out.println("f".matches("[a-z&&[abcdefg]]"));
System.out.println("-----------------------------");
System.out.println("c".matches("[a-g&&[^a-d]]"));
System.out.println("c".matches("[a-g&&[^g-j]]"));
System.out.println("-----------------------------");
//预定义字符:
System.out.println("你".matches("..")); //因为有两个点所以要两个字符,前面只有个你所以是false
System.out.println("你a".matches(".."));
System.out.println("-----------------------------");
System.out.println("a".matches("\\d"));
System.out.println("3".matches("\\d"));
System.out.println("333".matches("\\d\\d\\d"));
System.out.println("-----------------------------");
//数字词:
System.out.println("2432dEBfedv".matches("\\w{6,}")); //前面的\\w最少要出现6次位真
System.out.println("22dv".matches("\\w{6,}"));
System.out.println("-----------------------------");
System.out.println("23df".matches("[0-9a-zA-Z]{4}"));
System.out.println("23_f".matches("[0-9a-zA-Z]{4}")); //因为没_所以有一次不满足所以是false
System.out.println("-----------------------------");
//test:
//身份证号码的简单校验:
//18位,前17位任意数字(第一位不为0),最后一位可以是数字可以是大写或小写的x
System.out.println("19428429482947538X".matches("[1-9]\\d{16}(x|X|\\d)")); //|:或者
}
正则表达式在字符串方法中的运用
方法名 说明
public string[] matches (string regex) (前面学的) 判断字符串是否满足正则表达式的规则
public string replaceAll(String regex, String newStr) 按照正则表达式的规则进行替换
public string[] split(String regex) 按照正则表达式的规则切割字符串
有一段字符串:小天dqwefqwfqwfwq12312小李dqwefqwfqwfwq12312小惠
要求1:把字符串中三个姓名之间的字母替换为vs
要求2:把字符串中的三个姓名切割出来
String s = "小天dqwefqwfqwfwq12312小李dqwefqwfqwfwq12312小惠";
String vs = s.replaceAll("[\\w&&[^_]]+", "vs");
System.out.println(vs);
输出结果: