目录
包装类的分类
1.针对八种基本数据类型相应的引用类型一包装类。
2.有了类的特点,就可以调用类中的方法。
继承图
包装类和基本数据的转换
1)jdk5前的手动装箱和拆箱方式,装箱:基本类型->包装类型,反之,拆箱
2)jdk5以后(含jdk5)的自动装箱和拆箱方式
3)自动装箱底层调用的是valueOf方法,比如Integer.valueOf()
演示包装类和基本数据类型的相互转换,这里以int 和 Integer演示:
面试题
如下两个题目输出结果相同吗?各是什么?
答:都为true时, 上面输出的是1.0, 因为三元运算符是一个整体, Double的精度最高, 提升了优先级
下面输出的是1, if-else是单独的语句, 不会提升优先级
包装类型转String
注意.toString在i为null时, 会报空指针异常, 因为i还没有创建出来就去调用了方法, String.valueOf()不会, 查看源码会发现进行了null判断
字符串转包装类
包装类的常用方法
Integer类和Character类的常用方法
继承图查看所有方法
在继承图中可以直接点击图标查看它的所有方法
怎么进入这个继承图看下面链接- 目录>继承图怎么查看的
在继承图中点击下面图标可以看到它的属性
可以通过Jump to Source查看它的源码
Integer类面试题
看看下面代码,输出什么结果?为什么?
Integer m = 1;
Integer n = 1;
这里用了自动装箱, 其实底层是调了 valueOf 这个方法, 源码可以看到, valueOf在一个值传进去之后先去判断是否在一个范围内, 在这个范围内直接返回, 如果不在这个范围内再去new 一个新的对象
这个范围到底是多少看注释是-128 到 正的127
或者通过 ctrl + b 追进去
以上题的答案: false true false
题增加
以下只要只有基本数据类型, 判断的就是值是否相等
断点进入可以看到, 因为在比较的时候自动将Integer进行了自动拆箱, 返回了int , int 和int 比较就是值比较