BigDecimal类
作用:解决浮点型运算精度失真的问题,如果需要进行小数运算,先将数据转换为BigDecimal类型,再调用方法运算
创建对象:直接使用BigDecimal的==valueOf(double val) :==方法,将需要运算的小数, 封装为BigDecimal对象
如:BigDecimal.valueOf(5.4)
常用方法:
doubleValue:将BigDecimal类型的数据转换为double类型
add:(BigDecimal augend, MathContext mc):加法,参数1为保留多少小数位 ,参数二为保留小数的方式,常用为四舍五入
RoundingMode.UP 进一法RoundingMode.FLOOR 去尾法RoundingMode.HALF_UP 四舍五入
subtract:减法
multiply(BigDecimal multiplicand, MathContext mc):乘法,参数2为小数舍入方式
divide:除法,RoundingMode.HALF_UP:代表小数四舍五入
包装类
自动装箱:基本类型的数据和变量直接赋值给包装类型的变量。
自动拆箱:包装类型的变量直接赋值给基本数据类型的变量。
特点:
- 包装类变量的默认值可以是null,容错率更高
 - 可以把基本类型的数据转换成字符串类型(用处不大)
 - 可以把字符串类型的数值转换成真实的数据类型(有用)
 
字符串转基本数据类型:
除了Character类之外,其他所有包装类都有parseXxx静态方法可以将字符串参数转换为对应的基本类型:
如Integer.parseInt可以将字符串类型的整数转换为int类型
包装类面试题:
/*使用层面: 包装类对象, 做比较, 使用equals可以比较内容特点: 自动装箱的范围在 -128 ~ 127 之间, ==号比较就会返回为true---------------------------------------------------------------------------------------自动装箱的原理 :自动装箱, 系统会自动调用 Integer.valueOf() 方法, 来完成装箱public static Integer valueOf(int i) {if (i >= -128 && i <= 127) {// IntegerCache.cache : 数组中存储 ---> -128 ~ 127 之间的每一个数字 ---> 256个数字return IntegerCache.cache[i + 128]; // 255} else {// 如果装箱的数值, 不在范围当中, 就会重新new对象return new Integer(i);}}Integer类的源码中, 存在一份缓存, 这份缓存本质来说就是一个 Integer 类型的数组数组中, 会存储着 -128 ~ 127 之间所有的 Integer 对象在自动装箱的时候, 会调用 Integer.valueOf的方法, 方法内部会进行一次范围的判断如果范围在 -128 ~ 127 之间, 就不会创建新的Integer对象, 而是从缓存中取出来了一份反之, 不在范围中, 就会创建新的 Integer 对象*/public static void main(String[] args) {Integer i1 = 127; // i1 : 从数组中取出的对象 ---> 255号索引Integer i2 = 127; // i2 : 从数组中取出的对象 ---> 255号索引System.out.println(i1 == i2); // trueSystem.out.println(i1.equals(i2)); // trueSystem.out.println("-----------------");Integer i3 = 200;Integer i4 = 200;System.out.println(i3 == i4); // falseSystem.out.println(i3.equals(i4)); // trueSystem.out.println("-----------------");Long l1 = 127L;Long l2 = 127L;System.out.println(l1 == l2);//true
正则表达式
matches(String regex):判断是否匹配正则表达式,匹配返回true,不匹配返回false。
常用方法:
String    replaceAll(String regex,String newStr):按照正则表达式匹配的内容进行替换
String[]  split(String regex):按照正则表达式匹配的内容进行分割字符串,反回一个字符串数组。
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内存溢出异常
如:
public static void main(String[] args) {sum();}public static void sum() {sum();}//求5的累加和jc(5);public static int jc2(int num) {if (num == 1) {return 1;} else {return num += jc2(num - 1);}}
