提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
这几节课关于字节码的部分实在不好展示,还是去看视频,估计2-3个小时可以看完。
BILIBILI
一、命令
javap -v HelloWorld.class
二、x=x++等于0问题
x++先load再iinc,操作数栈先load 0,局部变量表再自增+1,再执行istore,将操作数栈中的x=0赋值给x,所以x=0
三、finally中添加return不会报try的异常
finally如果return,不会执行athrow命令,也就导致报错不会报,直接return
如果是
java
int i=10;
try{
return i;
}finally{
i=20;
}
返回值还是10,因为在取得值的时候会额外istore一次,是为了在后面被加载读取

发生异常也是一样的,都会加载存储的槽的数据
四、语法糖
泛型擦除:变量中泛型的类型会丢失,叫做泛型擦除,例如:
java
List<Integer> newList=new ArrayList<>()|;
newList.add(10) 会认为是List.add(Object)
但是方法参数变量和返回值上的参数类型,还是可以通过反射拿到:(反射指的是直接用类名调用方法,例如HellowWorld.class.hello())
java
public Set<Integer> test(List<String> list, Map<String,Object> map)
懒加载:类加载器加载C不会解析C,所以D也不会被解析和加载。但是如果new C,C会被完全解析和加载,所以D也会被解析和加载

总结
结束了