8/10

1、
图片说明
结合最近学的jvm理解更深刻了:
当实例化子类对象时,首先要加载父类的class文件进内存,静态代码块是随着类的创建而执行,所以父类静态代码块最先被执行,子类class文件再被加载,同理静态代码块被先执行;实例化子类对象要先调用父类的构造方法,而调用父类构造方法前会先执行父类的非静态代码块

2、
图片说明
hashMap在单线程中使用大大提高效率;
在多线程的情况下使用hashTable来确保安全,hashTable中使用synchronized关键字来实现安全机制,但是synchronized是对整张hash表进行锁定即让线程独享整张hash表,在安全同时造成了浪费;
concurrentHashMap:
JDK1.8后,concurrenthashmap取消了segment分段锁,采用cas和synchronized来保证并发安全
详细的介绍!!https://blog.csdn.net/weixin_44460333/article/details/86770169

Arrays.asList:
图片说明
https://blog.csdn.net/kzadmxz/article/details/80394351

图片说明

3、
图片说明

图片说明

图片说明

图片说明

首先明确一点,所有的包装类,都是 final 不可变类,这点与 String 是一致的,任何的修改都是新对象的创建;
浮点型的 Float、Double 与 Boolean 不存在缓存池的概念。Byte、Short、Integer、Long、Character 存在缓存池,默认范围都是 -128~127;
++a:创建一个新的包装类对象,把a指向的缓存池里的127+1=溢出-128赋值给它,再让a指向它,a->-128
函数内部b=b++:局部变量b指向了-128这个新包装类,但是b++表达式就是b,相当于b没变 b->-128

图片说明
输出:-128 -128 127 127

单纯的b++:
图片说明
输出:-127-128 -128127

其实就一点:final不变,任何操作都是新对象创立
图片说明
Short包装类特殊性

图片说明