本帖最后由 yqw_gz_java 于 2019-1-23 10:51 编辑
在jdk7java编译做了一些优化现在我看一下下面的列子:[AppleScript] 纯文本查看 复制代码 package demo.test;
public class Test {
public static void main(String[] args) {
int a=100*8;
// System.out.println(a);
}
}
这代码是不是很简单那么我们看看他反编译之后是怎么样的呢?
[AppleScript] 纯文本查看 复制代码 package demo.test;
public class Test {
public Test() {
}
public static void main(String[] args) {
int a = true;
}
}
怎么a会是true呢???
是不是假的呀?
接着看下面稍作改变
[AppleScript] 纯文本查看 复制代码 package demo.test;
public class Test {
public static void main(String[] args) {
int a=100*8;
System.out.println(a);
}
}
单单加了一条输出语句
[AppleScript] 纯文本查看 复制代码 package demo.test;
public class Test {
public Test() {
}
public static void main(String[] args) {
int a = 800;
System.out.println(a);
}
}
怎么变成800了???
总结:jdk7 你定义变量在没使用的情况编译器会赋值为true;
如果你定义变量赋值的是一个表达式,并且没有其他变量参与运算那么,编译器会直接算出来赋值给变量。
|