2016-06-22 5 views
2

公式ドキュメントは、ちょうどJavaは実際には空文で何かをしますか?

14.6を言います。空のステートメント

空のステートメントは何もしません。

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

;;;;;;;;;;;ようなステートメントは、実際にはJavaコンパイラによってコンパイルされていますか? もしそうなら、nopのように、これらのステートメントは実行に時間がかかりますか? 要するに、空の文は本当に「何もしない」のですか?

答えて

6

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を使用しています。

関連する問題