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);

输出结果:

相关推荐
Vertira3 分钟前
python 配置PostgreSQL 数据库
开发语言·python
该昵称用户已存在6 分钟前
从成本中心到价值引擎:MyEMS 开源系统激活企业能源数据资产
java·后端·struts
隐退山林7 分钟前
JavaEE进阶:SpringBoot配置文件
java·spring boot·java-ee
阿维的博客日记19 分钟前
求解深分页问题,last pk适合什么情况
java·mysql·深分页
Highcharts.js31 分钟前
Highcharts 纯 JavaScript 图表库深度使用评测
开发语言·前端·javascript·功能测试·ecmascript·highcharts·技术评测
瑶池酒剑仙36 分钟前
C++类和对象完全指南:从封装继承多态到内存布局的面向对象宝典(雨夜论道)
c语言·开发语言·c++·visual studio
三品吉他手会点灯43 分钟前
C语言学习笔记 - 27.C编程预备计算机专业知识 - 什么是字节
c语言·开发语言·笔记·学习
许彰午1 小时前
政务远程帮办部署踩坑实录——从互联网到政务外网
开发语言·网络·政务
极客先躯1 小时前
高级java每日一道面试题-2025年12月09日-实战篇[Docker]-如何配置 Docker 的日志驱动?有哪些日志驱动可选?
java·docker·日志驱动的作用与配置层级·日志驱动全览与对比·日志驱动配置的要点·日志标签定制·容器与宿主机时间戳