15

誤って、最後に2つのセミコロンを含むJavaステートメントを記述しました。Javaコンパイラはエラーを表示せず、実行されます。

コード:

System.out.println("Length after delete the text is "+name.length());;

学習目的で、セミコロンの後に別の文字を追加しようとしましたが、Javaコンパイラはコンパイル時エラーをトークン ")"の構文エラーとして表示しました。このトークンを削除してください

この文:

System.out.println("Length after delete the text is "+name.length());)

Javaがセミコロンと他の文字を異なるものとして扱うのはなぜですか?

4

5 に答える 5

38

ダブルセミコロンはダブルセミコロンとしてではなく、セミコロンと空のステートメントとして扱われるためです。そして、何もしない空のステートメントはエラーではありません。

于 2012-03-03T13:25:27.847 に答える
18

他の回答で述べられているように、通常、2番目のセミコロンは空のステートメントとして解釈されます。これは、ステートメントが許可される場合は常に許可されます。

実際には、ダブルセミコロンでエラーが発生する場合があります。

public int method() {
   return 1;;
}

コンパイラーが場所に到達できないと判断した場合(これはJLSで正確に定義されていますが、、、、およびの直後の場所が含まれていますreturn)、空のステートメントも含めて、ステートメントは許可されません。breakcontinuethrow

于 2012-03-03T17:02:59.077 に答える
11

Java言語標準によれば、2番目のセミコロンは空のステートメントです。

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

EmptyStatement:
    ;

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

于 2012-03-03T13:29:05.607 に答える
1

;それ自体は空の演算子であるため、元のケースでは事実上2つの演算子があります。

于 2012-03-03T13:25:54.510 に答える
1

セミコロンで文を終了します。

System.out.println("Length after delete the text is "+name.length());;

2番目のセミコロンは、文が空であることを意味します。

System.out.println("Length after delete the text is "+name.length());)

未完成の文を完成させようとしているので間違っています。

于 2012-03-03T13:26:37.023 に答える