今日内容

  • BigInteger类
  • BigDecimal类
  • Arrays类
  • 包装类
  • String类的常用方法
  • 正则表达式
  • Collection集合

    1.BigInteger类

    1.1概述

  • 概述:java.math.BigInteger类是一个引用数据类型,可以用于计算一些大的整数,当超出基本数据类型数据范围的整数运算时就可以使用BigInteger了

    1.2构造方法

  • 构造方法:可以将整数的字符串,转成BigInteger类型的对象

    1.3成员方法

    | 方法声明 | 描述 | | —- | —- | | public BigInteger add(BigInteger value) | 超大整数加法运算 | | public BigInteger subtract(BigInteger value) | 超大整数减法运算 | | public BigInteger multiply(BigInteger value) | 超大整数乘法运算 | | public BigInteger divide(BigInteger value) | 超大整数除法运算,除不尽取整数部分 |

2.BigDecimal类

2.1概述

  • 概述:java.math.BigDecimal可以对大浮点数进行运算,保证运算的准确性。float,double他们在存储及运算的时候,会导致数据精度的丢失。如果要保证运算的准确性,就需要使用BigDecimal。

    2.2构造方法:

  • 构造方法:

    • public BigDecimal(String val):将BigDecimal的字符串表示形式 转换成 BigDecimal

      2.3成员方法

      | 方法声明 | 描述 | | —- | —- | | public BigDecimal add(BigDecimal value) | 加法运算 | | public BigDecimal subtract(BigDecimal value) | 减法运算 | | public BigDecimal multiply(BigDecimal value) | 乘法运算 | | public BigDecimal divide(BigDecimal value) | 除法运算(除不尽会有异常) | | public BigDecimal divide(BigDecimal divisor,int roundingMode) | 除法运算(除不尽,使用该方法)参数说明:roundingMode取舍模式
      BigDecimal.ROUND_HALF_UP 四舍五入
      BigDecimal.ROUND_FLOOR 去尾法
      BigDecimal.ROUND_UP 进一法 |

3.Arrays类

3.1概述

  • 概述:java.util.Arrays是数组的工具类,里面由很多静态的方法用来对数组进行操作(如排序和搜索),还包含一个静态工厂,可以将数组转为List集合

    3.2构造方法

  • 构造方法:private Arrays(){} | public static void sort(int[] a) | 按照数字顺序排列指定的数组 | | —- | —- | | public static String toString(int[] a) | 返回指定数组的内容的字符串表示形式 |

4.包装类

4.1概述

  • 概述:Java中基本数据类型对应的引用数据类型

    4.2包装类的作用

  • 包装类的作用

    • 基本数据类型,没有变量,没有方法,包装类就是让基本数据类型拥有变量和属性,实现对象化交互
    • 基本数据类型和字符串之间的转换

      4.3基本数据类型和包装类对应

  • 基本数据类型和包装类的对应关系 | 基本数据类型 | 包装类型 | | —- | —- | | byte | Byte | | short | Short | | int | Integer | | long | Long | | float | Float | | double | Double | | char | Character | | boolean | Boolean |

4.4自动装箱和自动拆箱

  • 自动转型和自动拆箱

    • 自动装箱和拆箱是JDK1.5开始的
    • 自动装箱:基本数据类型自动转成对应的包装类类型
    • 自动拆箱:包装类类型自动转成对应的基本数据类型

      4.5基本数据类型和字符串之间的转换

  • 使用包装类,对基本数据类型和字符串之间的转换

    • 在开发过程中数据在不同平台之间传输时都以字符串形式存在的,有些数据表示的是数值含义,如果要用于计算我们就需要将其转换基本数据类型
    • 基本数据类型—>String
      • 直接在数值后加一个空字符串(””)
      • 通过String类静态方法valueOf()
    • String—>基本数据类型 | public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型 | | —- | | public static short parseShort(String s):将字符串参数转换为对应的short基本类型 | | public static int parseInt(String s):将字符串参数转换为对应的int基本类型 | | public static long parseLong(String s):将字符串参数转换为对应的long基本类型 | | public static float parseFloat(String s):将字符串参数转换为对应的float基本类型 | | public static double parseDouble(String s):将字符串参数转换为对应的double基本类型 | | public static boolean parseBoolean(String s):将字符串参数转换为对应的boolean的基本类型 |
  • 注意事项:

    • 包装类对象的初始值为null(是一个对象)
    • java中除了float和double的其他基本数据类型,都有常量池
      • 整数类型:[-128,127]值在常量池
      • 字符类型:[0,127]对应的字符在常量池
      • 布尔类型:true,false 在常量池
    • 在常量池中的数据,会进行共享使用,不在常量池中的数据会创建一个新的对象

      5.String类的常用方法

      | 字符串拼接 | public String concat(String str) | 将当前字符串与参数字符串进行“拼接”,返回一个新字符串。等效于加号拼接 | | —- | —- | —- | | 字符串判断 | public boolean contains(CharSequence s) | 判断参数字符串在当前字符串中是否在(区分大小写),存在返回true | | | public boolean endsWith(String suffix) | 测试此字符串是否以指定的后缀结尾(区分大小写) | | | public boolean startsWith(String prefix) | 测试此字符串是否以指定的前缀开始(区分大小写) | | | public int indexOf(String str) | 返回指定子字符串第一次出现的字符串内的索引。如果不包含,则返回-1 | | | public int lastIndexOf(String str) | 返回指定子字符串最后一次出现的字符串中的索引。如果不包含,则返回-1 | | 替换截取 | public String replace(CharSequence target,CharSequence replacement) | 将与字面目标序列匹配的字符串的每个子字符串替换为指定的文字替换序列 | | | public String substring (int beginIndex) | 将当前字符串从beginIndex开始截取到末尾 | | | public String substring(int beginIndex,int endIndex) | 将当前字符串从beginIndex开始截取到endIndex-1处(包含头,不包含尾) | | 字符串转换 | public char[] toCharArray() | 将当前字符串转换为char[] 数组 | | | public char charAt(int index) | 将字符串中指定索引的字符获取 | | | public String toLowerCase() | 将当前字符串中的所有英文字符转换为小写,并返回一个转换后的新字符串,原字符串不变 | | | public String toUpperCase() | 将当前字符串中的所有英文字符转换为大写,并返回一个转换后的新字符串,原字符串不变 | | 前后空格去除 | public String trim() | 去掉当前字符串的前后空格(空格符,指标符,换行符等),并返回一个新字符串,原字符串不变 | | 字符串的切割 | public String[] split(String regex) | 切割字符串——将字符串以regex作为分隔符切割 |

6.正则表达式

6.1概述

  • 正则表达式通常用来校验,检查字符串是否符合规则的

    6.2正则表达式的语法

  • boolean matches(正则表达式):如果匹配曾泽表达式就返回true,否则返回false

  • 字符类
    • [abc]:代表a或者b,或者c字符中的一个
    • [^abc]:代表除a,b,c以外的任何字符
    • [a-z]:代表a-z的所有小写字符中的一个
    • [A-Z]:代表A-Z的所有大写字符中的一个
    • [0-9]:代表0-9之间的某一个数字字符
    • [a-zA-z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符
    • [a-dm-p]:a到d或者m到p之间的任意一个字符
  • 逻辑运算符
    • &&:并且
    • |:或者
  • 预定义字符类
    • “.”:匹配任何字符
    • “\d”:任何数字[0-9]的简写
    • “\D”:任何非0-9的简写
    • “\s”:空白字符:[\t\n\x0B\f\r]的简写
    • “\S”:非空白字符
    • “\w”:单词字符:[a-zA-Z_0-9]的简写
    • ”\W“:非单词字符
  • 数量词
    • X?:0次或1次
    • X*:0次到多次
    • X+:1次或多次
    • X{n}:恰好n次
    • X{n,}:至少n次
    • X{n,m}:n到m次(n和m都是包含的)
  • 字符串中常用含有正则表达式的方法

    • public String[] split(String regex)可以将当前字符串中匹配regex正则表达式的符号作为“分隔符”来切割字符串
    • public String replaceAll(String regex,String newStr)可以将当前字符串匹配regex正则表达式的字符串替换为newStr

      7.引用数据类型使用

      7.1使用方式

  • 基本数据类型可以当作方法的参数,返回值及成员变量使用,传递或者保存的是数据值。

  • 引用数据类型也可以当作方法参数,返回值及字段使用,传递或者保存的是对象的引用(地址)
  • 特别注意:如果是抽象类或者接口那么传递或者保存的就是子类对象的地址引用

    8.Collection集合

    8.1集合合数组的区别

  • 长度区别

    • 数组:长度固定
    • 集合:长度可变
  • 存储数据类型

    • 数组:可以存储基本数据类型,也可以存储引用数据类型
    • 集合:只能存储引用数据类型,要想存储基本数据类型,需要存储对应的包装类类型

      8.2集合的体系image-20210404232635762.png

      8.3Collection集合的常用方法

  • 在学习集合体系,一般先学习顶层接口。学习了顶层接口的方法,子类型继承而来的方法,就可以不用重复学习。

    • public boolean add(E e):把给定的对象添加到当前集合中
    • public void clear():清空集合中所有的元素
    • public boolean remove(E e):把给定的对象在当前集合中删除
    • public boolean isEmpty():判断当前集合是否为空
    • public int size():返回集合中元素的个数
    • public Object[] toArray():把集合中的元素,存储到数组中

      8.4迭代器

  • 概述

    • 迭代器就是对Iterator的称呼,专门用来对Collection集合进行遍历使用的。学习迭代器的目的就是为了遍历集合
  • 注意:
    • 只有继承/实现Iterable接口才具有迭代的能力
    • Collection接口继承了Iterable接口,所以Collecion及其子类都具备迭代能力
  • 获取迭代器对象的方式
    • 通过Collection集合对象调用Iterable接口中的iterator方法,就可以获取迭代器对象
  • Iterator(迭代器)中的方法 | boolean | hasNext() | 如果迭代具有更多元素,则返回true | | —- | —- | —- | | E | next() | 返回迭代中的下一个元素 | | default void | remove() | 从底层集合中删除此迭代器返回的最后一个元素(可选操作) |

  • 迭代器的注意事项

    • 当迭代器迭代元素完成后,不能继续next获取元素,否则会报错:NoSuchElementExceptrion
    • 当迭代器在使用的过程中,不能使用集合对象直接增删元素。会导致报错:ConcurrentModeificationException。如果要删除可以使用迭代器来删除

      8.5增强for循环

  • 增强for循环(foreach),专门用来遍历集合或者数组,底层实现使用迭代器

  • 定义格式:

for(元素类性 变量名 :数组/单列集合){
变量代表的就是集合或者数组的元素
}