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

输出结果:

相关推荐
神仙别闹14 分钟前
基于 C++ 实现(控制台)学生成绩管理系统
开发语言·c++
Wang's Blog21 分钟前
Java 接入Redis: 服务启动停止与后台运行配置
java·服务器·redis
此时不提桶,更待何时37 分钟前
01-04-B-垃圾回收面试与生产事故实战
java·jvm·面试
伞伞悦读44 分钟前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
鹿角片ljp3 小时前
KV Cache 解析
java·算法
captain3763 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
惊讶的猫3 小时前
意图识别置信度和检索重排的分数
java
2601_966949654 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
caoerzhong4 小时前
仓库管理数字化趋势解读:JeeWMS 开源 Java WMS 视角下的五个演进方向
java·开源