if语句如果省略大括号的话只可以执行离他最近的一句 看好是一句 你的第一个代码执行出来是aaaaaaaa吧
而第二个代码 if (i<15) int x = 10; 之所以会编译错误是因为 Java虚拟机在编译的时候 会把int x = 10;
看做 int x; x = 10; 这样的话就成了两句话了 所以会报错
public static void main(String[] args) {
int i = 5;
if (i<15)
int x = 10;// if后面不跟大括号的话,只能跟一句话,然而
// int x = 10; jvm会将它看成两句:int x; x=10;所以x = 10 已经在if代码块
// 块儿外面了,所以会报错
if(i<15)
int x = 10; //这个不通过是必须滴,因为这个JVM其实是拆分成 int x; x=10;
//然而if语句不加大括号的话,只能执行一条语句,那就是执行int x; ,
//你上面这个的句子相当于if(i<15){int x;} x = 10; x这个变量会找不到的,直接编译报错