jvm后80回

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

这几节课关于字节码的部分实在不好展示,还是去看视频,估计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也会被解析和加载


总结

结束了

相关推荐
weixin_408717773 分钟前
实现鼠标滚轮在容器滚动到底部后无缝传递至页面的平滑过渡
jvm·数据库·python
m0_514520578 分钟前
如何分析Data Guard的网络瓶颈_Bandwidth与Redo传输速率的计算公式
jvm·数据库·python
weixin_4585801210 分钟前
如何查找SQL中未使用JOIN的数据行_利用IS NULL配合LEFT JOIN
jvm·数据库·python
吕源林10 分钟前
c++如何利用filesystem--path--lexically_normal规范化路径名【详解】
jvm·数据库·python
青衫码上行12 分钟前
【从零开始学习JVM】栈中存的是指针还是对象 + 堆分为哪几部分
java·jvm·学习·面试
a95114164212 分钟前
解决Socket图像传输中断问题:基于分块接收与正确连接模型的稳定实现
jvm·数据库·python
2402_8548083713 分钟前
如何防止SQL注入泄露元数据_限制数据库信息查询权限
jvm·数据库·python
2401_8371638915 分钟前
JavaScript中rest参数(...args)取代arguments的优势
jvm·数据库·python
2401_8716965215 分钟前
c++如何利用C++23 std--expected处理复杂的IO链式调用错误【实战】
jvm·数据库·python
qq_3729069317 分钟前
如何用 CustomEvent 构造函数创建携带自定义数据的事件
jvm·数据库·python