BigDecimal类

作用:解决浮点型运算精度失真的问题,如果需要进行小数运算,先将数据转换为BigDecimal类型,再调用方法运算
创建对象:直接使用BigDecimal的==valueOf(double val) :==方法,将需要运算的小数, 封装为BigDecimal对象
如:BigDecimal.valueOf(5.4)
常用方法:
doubleValue:将BigDecimal类型的数据转换为double类型
add:(BigDecimal augend, MathContext mc):加法,参数1为保留多少小数位 ,参数二为保留小数的方式,常用为四舍五入

  1. RoundingMode.UP 进一法
  2. RoundingMode.FLOOR 去尾法
  3. RoundingMode.HALF_UP 四舍五入

subtract:减法
multiply(BigDecimal multiplicand, MathContext mc):乘法,参数2为小数舍入方式
divide:除法,RoundingMode.HALF_UP:代表小数四舍五入

包装类

自动装箱:基本类型的数据和变量直接赋值给包装类型的变量。
自动拆箱:包装类型的变量直接赋值给基本数据类型的变量。
特点:

  • 包装类变量的默认值可以是null,容错率更高
  • 可以把基本类型的数据转换成字符串类型(用处不大)
  • 可以把字符串类型的数值转换成真实的数据类型(有用)

字符串转基本数据类型
除了Character类之外,其他所有包装类都有parseXxx静态方法可以将字符串参数转换为对应的基本类型:
如Integer.parseInt可以将字符串类型的整数转换为int类型

包装类面试题

  1. /*
  2. 使用层面: 包装类对象, 做比较, 使用equals可以比较内容
  3. 特点: 自动装箱的范围在 -128 ~ 127 之间, ==号比较就会返回为true
  4. ---------------------------------------------------------------------------------------
  5. 自动装箱的原理 :自动装箱, 系统会自动调用 Integer.valueOf() 方法, 来完成装箱
  6. public static Integer valueOf(int i) {
  7. if (i >= -128 && i <= 127) {
  8. // IntegerCache.cache : 数组中存储 ---> -128 ~ 127 之间的每一个数字 ---> 256个数字
  9. return IntegerCache.cache[i + 128]; // 255
  10. } else {
  11. // 如果装箱的数值, 不在范围当中, 就会重新new对象
  12. return new Integer(i);
  13. }
  14. }
  15. Integer类的源码中, 存在一份缓存, 这份缓存本质来说就是一个 Integer 类型的数组
  16. 数组中, 会存储着 -128 ~ 127 之间所有的 Integer 对象
  17. 在自动装箱的时候, 会调用 Integer.valueOf的方法, 方法内部会进行一次范围的判断
  18. 如果范围在 -128 ~ 127 之间, 就不会创建新的Integer对象, 而是从缓存中取出来了一份
  19. 反之, 不在范围中, 就会创建新的 Integer 对象
  20. */
  21. public static void main(String[] args) {
  22. Integer i1 = 127; // i1 : 从数组中取出的对象 ---> 255号索引
  23. Integer i2 = 127; // i2 : 从数组中取出的对象 ---> 255号索引
  24. System.out.println(i1 == i2); // true
  25. System.out.println(i1.equals(i2)); // true
  26. System.out.println("-----------------");
  27. Integer i3 = 200;
  28. Integer i4 = 200;
  29. System.out.println(i3 == i4); // false
  30. System.out.println(i3.equals(i4)); // true
  31. System.out.println("-----------------");
  32. Long l1 = 127L;
  33. Long l2 = 127L;
  34. System.out.println(l1 == l2);//true

正则表达式

matches(String regex):判断是否匹配正则表达式,匹配返回true,不匹配返回false。

常用方法:
String replaceAll(String regex,String newStr):按照正则表达式匹配的内容进行替换
String[] split(String regex):按照正则表达式匹配的内容进行分割字符串,反回一个字符串数组。

  1. String description = Pattern.compile("[\\d]").matcher(content).replaceAll("");

Arrays类:(类中方法通过类名调用)

作用:数组操作工具类,专门用于操作数组元素的。
static String toString(类型[] a):返回数组的内容(字符串形式)
static void sort(类型[] a):对数组默认升序排序
static int binarySearch(int[] a,int key):二分搜索数组中的数据,存在返回索引,不存在返回-1
static void sort(类型[] a, Comparator<?super T> c):使用比较器对象自定义排序

自定义排序规则:
如果认为左边数据 大于 右边数据 返回正整数
如果认为左边数据 小于 右边数据 返回负整数
如果认为左边数据 等于 右边数据 返回0

递归

含义:方法自己调用自己,如果递归程序找不到出口,会出现 StackOverflowError内存溢出异常
如:

  1. public static void main(String[] args) {
  2. sum();
  3. }
  4. public static void sum() {
  5. sum();
  6. }
  7. //求5的累加和
  8. jc(5);
  9. public static int jc2(int num) {
  10. if (num == 1) {
  11. return 1;
  12. } else {
  13. return num += jc2(num - 1);
  14. }
  15. }