1. ホーム
  2. java

if文の末尾のセミコロン

2023-08-24 19:23:15

質問

今日、30分ほどバグを探した結果、以下のようにコードではなく、if文の後にセミコロンを置くことが可能であることを発見しました。

if(a == b);
// Do stuff

ということは、基本的に、その内容は、以下のいずれかになります。 a が等しいかどうか b になるかどうか、そして if ステートメントには何の意味もありません。なぜJavaは私にエラーを与えないのでしょうか?これが役に立つような状況はあるのでしょうか?

どのように解決するのですか?

なぜそれが起こるのですか?

Java言語仕様 にはこう書かれています。

空の声明

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

EmptyStatement:
    ;

空のステートメントの実行は常に正常に完了します。

本来は、a==bの場合にempty statementを実行したい、という意味です。

if(a == b);

どうすればいいのでしょう。

この問題の解決方法は主に2つあります。

  1. コードフォーマッタを使用することで、空のステートメントによる問題を回避することができます。 で囲むことで問題を回避できます。 if で囲みます。 {} . このようにすることで 空の文はより読みやすくなります。

    if(a == b){
      ;
    }
    
    
  2. などの静的コード解析に使用されるツールも確認することができます。

    今回のような問題を即座に浮き彫りにすることができるのです。

私は、両方のソリューションを組み合わせることをお勧めします。