コメントと文の構造を理解する
ソースは行数ではなく、文・ブロック・コメントの区切りに従って読みます。セミコロンと中括弧の役割を押さえ、コメントで無効になる範囲と実際に動く文を区別します。
この単元で学ぶこと
- 行コメントと範囲コメントを区別する
- 文とブロックの範囲から出力を追う
- 空文や区切りの不足による結果を判断する
本文解説
行コメント //から行の終わりまではコメントになり、通常の文として実行しません。int n=2; // n=9; の次行でnを表示すれば2です。改行後のコードまでコメントになるわけではありません。
範囲コメント /*と*/で囲んだ範囲は複数行でもコメントです。int n=2;/* n=9; */n++;なら最後は3です。閉じる*/を忘れるとファイルの残りを適切に解釈できず、コンパイルエラーになります。
コメントと文字列 System.out.print("//")は二つのスラッシュを表示します。文字列の引用符内にある記号はコメント開始として扱いません。コメント内に書いた引用符も、それだけでコメントの外へ出るための記号にはなりません。
セミコロンで文を終える int n=2;とSystem.out.print(n);のように、ローカル変数宣言やメソッド呼出し文には終端のセミコロンが必要です。二つの文を同じ行へ書くことはできます。反対に、改行だけでセミコロンを省略することはできません。
ブロックでまとめる if(true){System.out.print("A");System.out.print("B");}の形では中括弧内を一つのまとまりとして条件に結び付けます。中括弧なしのif(false)に続く文は一つだけです。その次の別の文まで字下げで条件の対象にすることはできません。
空文 セミコロンだけの;は何もしない文です。if(false);System.out.print("A");ではifの対象は空文であり、後のprintは無条件に動きます。セミコロンが余っても必ず文法エラーになるとは限らない点に注意します。
コメントは入れ子にしない /* outer /* inner */という並びは、最初の*/でコメントが閉じます。その後の文字が自動的に外側コメントへ戻ることはありません。大きな範囲を一括コメント化するときに既存の範囲コメントを含めると、意図しないコードが残り得ます。
空白と字句の区切り int/*説明*/n=3;はコメントが区切りとして働くため合法です。一方、in/*説明*/t n=3;としてもintという予約語へ再結合されません。コメントは文字を単純に削除して隣接部分を一語へ結合する仕組みではありません。
図解
重要ポイント
- //は行末まで、/* */は閉じ記号までコメントにする。
- コメントは文字列の内部では通常の文字。
- セミコロンが文を終え、改行だけでは代わりにならない。
- ifやforの後の空文を見落とさない。
間違えやすい点
- ブロックコメントを入れ子にしない。
- 字下げだけで条件の範囲を判断しない。
- ifの後へ不用意にセミコロンを置かない。
用語解説
- 文
- 代入やメソッド呼出し等、実行する処理の構文単位。
- ブロック
- 中括弧で囲んだ文や宣言のまとまり。
- 空文
- セミコロンだけからなり何もしない文。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。