Java实际上是用空语句做某事吗?

时间:2016-06-22 09:15:48

标签: java jvm

官方文档只是说

  

14.6。空陈述

     

空语句什么都不做。

https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.6

;;;;;;;;;;;这样的语句实际上是由Java编译器编译的吗? 如果是这样,这些陈述是否需要时间来执行,如nop? 简而言之:一个空洞的陈述真的“没有”吗?

1 个答案:

答案 0 :(得分:7)

java编译器对这些语句不做任何处理。因此,他们被忽略了。 以下方法

public static void test(){
  ;;;;;;;;
}

只需编译到以下字节码:

public static void test();
descriptor: ()V
flags: ACC_PUBLIC, ACC_STATIC
Code:
  stack=0, locals=0, args_size=0
     0: return
  LineNumberTable:
    line 39: 0

编译器只在某些编译策略中使用NOP。