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

输出结果:

相关推荐
IDRSolutions_CN17 分钟前
如何将 PDF 中的文本提取为 JSON 格式
java·经验分享·pdf·软件工程·团队开发
摘星编程38 分钟前
并发设计模式实战系列(6):读写锁
java·设计模式·并发编程
吴_知遇44 分钟前
【华为OD机试真题】428、连续字母长度 | 机试真题+思路参考+代码解析(E卷)(C++)
开发语言·c++·华为od
Java中文社群1 小时前
最火向量数据库Milvus安装使用一条龙!
java·人工智能·后端
Apache Flink1 小时前
京东物流基于Flink & StarRocks的湖仓建设实践
java·大数据·flink
basketball6161 小时前
Python torchvision.transforms 下常用图像处理方法
开发语言·图像处理·python
JAVA百练成神1 小时前
深度理解spring——BeanFactory的实现
java·后端·spring
兔子蟹子1 小时前
Java集合框架解析
java·windows·python
宁酱醇1 小时前
各种各样的bug合集
开发语言·笔记·python·gitlab·bug
DKPT1 小时前
正则表达式
java·数据库·笔记·学习·正则表达式