public class Demo02 {
public static void main(String[] args) {
test();
}
public static void test() {
int a = 3;
if (true) {
return;
}
//else return;
System.out.println(1);
}
}
如上代码,if的条件是true,这就代表这调用test方法时,return一定会执行,后面的打印语句看起来是无法执行到的,按照平常来讲,这种代码直接就会编译报错,但是实际上是没有报错,除非加上else return;才会出现报错,请问这是为什么呢?JVM在进行编译的时候是怎么编译这段代码的呢?java在编译if else的时候会检查if()中的条件么?
看起来编译器在编译时,只会进行语义检查,并不会对if的条件进行实际计算。
有返回值的方法的检查每一个分支是否有值返回,以及后续语句能否执行到。
没有返回值的方法更关注后续语句是否能够正常执行