24/04/02总结

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,精确几位,舍入模式)除法 (就是除不尽就是这个)

java 复制代码
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的对象,内部有优化

静态:(对象一旦创建,内部记录的值不能发生改变)

java 复制代码
  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可忽略大小写

java 复制代码
 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:把字符串中的三个姓名切割出来

java 复制代码
 String s = "小天dqwefqwfqwfwq12312小李dqwefqwfqwfwq12312小惠";
        String vs = s.replaceAll("[\\w&&[^_]]+", "vs");
        System.out.println(vs);

输出结果:

相关推荐
Re_zero38 分钟前
线上日志被清空?这段仅10行的 IO 代码里竟然藏着3个毒瘤
java·后端
洋洋技术笔记43 分钟前
Spring Boot条件注解详解
java·spring boot
程序员清风19 小时前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林55120 小时前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊1 天前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing1 天前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
日月云棠2 天前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840822 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide2 天前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
IT探险家2 天前
Java 基本数据类型:8 种原始类型 + 数组 + 6 个新手必踩的坑
java