文章目录
复习
Math
判断空值
BigDecimal
描述一个小数。超过16位有效位的数进行精准计算。
代码中直接写小数默认是double值
new BigDecimall(“5.5”);
两个对象不能直接相加,add不是直接将结果赋值给b1,而是返回。
常用方法
减法 、乘法
除法要考虑到是否能除尽
除数,保留几位小数,模式(final的值)
两种方式
setScale格式化小数点
equals toString
结果是false ,== 比的是地址
String
面试题: == 和 equals 的区别
String类型的对象,底层实际是一个final修饰的char类型的数组
![在这里插入图片描述](https://img-blog.csdnimg.cn/d133695ed70e48c485cafcccb7b162a5.png
常用方法
String 创建是不可变的,返回值是变化的。
字符串常量池
减少内存开销
字符串不可变 (final + private)
StringBuffer StringBuilder
面试题: String 和StringBuffer StringBuilder 的区别
本质区别就是char数组加没加private去修饰
toString 是开新堆
字符串补充
字符串拼接
append
p变量是new 了新堆的结果
r 是在常量池里
s和r 内存地址不相等,因为s是变量,在编译的时候不确定
intern()方法
查看常量池中是否有存在值
常量池里只有"of" “aa”
变量v 实际上开了一块普通的堆
w 用的是常量池已经存在的地址引用
常量池里存放的是引用,指向v 开的普通的堆
引号里面是常量
s3是开新堆(普通堆),已经有了abcd
intern只后是常量池里的地址(s4)
结果是false