Integer

1.两种创建方式

自动装箱

Integer a = 100;--->编译器会自动转为
Integer a = Integer.valueOf(100);

基于享元模式

Integer中有一个静态内部类IntegerCache
缓存了[-128,127]的数

调用 Integer.valueOf(a)
并且判断是否有缓存,
有则走,无则放弃
显式new Integer b = new Integer(100);
调用构造函数,直接创建

2.源码分析
在InputStream类中,
有三个read()函数
其中一个是无参的abstract方法,也就是说子类必须重写
然后一个双参数,一个三参数,他们内部最终仍旧调用无参的抽象方法,
也就是将控制权交给了子类, 这是模板方法模式的思想—>反转控制
image1