1 通过命令编译程序
javac *.java
打开命令提示符
编译Test.java文件,生成字节码文件,如果提示不是内部或者外部命令,就需要设置环境变量。
2 反编译字节码文件
javap -c *.class
程序运行结果,变量a的值是1。
3 对比a++和++b
程序运行结果,变量a的值是1,变量b的值也是1
从字节码反编译的结果看,a++和++b没有区别。
4 对比x = a++和y=++b
从字节码反编译的结果看
变量a的值会变成1 变量b的值也会变成1
对于x=a++而言,会先将a的值保存到栈,再执行+1,变量a的值变成1,再将栈的值给x,所以x的值是0
对于y=++b而言,会先将b的值+1,变成1,再将b的值保存到栈,栈的值会是1,再将栈的值给y,所以y的值是1
5 对比a=a++和b=++b
a=a++,先将a的值保存到栈,栈的值是0,再a的值+1,a变成1,再将栈的值给a,a的值重新回到0
b=++b,先将b的值+1,b的值变成1,再将b的值保存到栈,栈的值是1,再将栈的值给b,所以变量b的值是1
0条评论
点击登录参与评论