第 2 章 Java 言語の基本的な文法 I 5
2.4 Comments.java ( コメント文いろいろ )
public class Comments {
public static void main(String[] args) { // このように始めると 、単一行コメント
@SuppressWarnings("unused")
int x = 10; // こうして命令の右にコメントを置くことが可能
// int y = 20; でも、命令の左に斜線2本を置くと、命令自体もコメントに /*
複数行のコメントを書きたいとき このように、ブロックコメントを使う 間に挟まったものは全てコメントとなる int z = 30; これもコメントになってしまう
*/
/*
* Eclipse でブロックコメントを書くと、このように途中の行の行頭に * 星印が続きます
*/
/**
* Javadoc 用のコメントの書き方は、付録Cで解説します
*/
} }
ここで、Eclipseの表示について
上のプログラムを作っていくと、5行目の頭に「黄色いランプに黄色の注意標識のアイコン( )」が付くと思います。
これは「warning(ウォーニング:注意)」(文法的には間違っていないので実行はできるけれど、お薦めしないよ!)
というアイコンです。このアイコンの上にポインタを持っていくと、Eclipseが「ローカル変数xの値は使用されてい ません」と表示してくると思います。つまり、変数xは宣言されて初期値も代入されたけど、その後で何も使っていな いよね。これって無駄だよね!この変数いらないんじゃない?と言っているのです。こうした場合以外にもEclipseは いろいろな場面で黄色のランプを表示してきます。
さて、この表示、実行には支障ないとはいえ少々邪魔。そこで、「分かっているから、ランプの表示を消して!」と
Eclipseに言う方法を教えておきます。もちろん、本来はこの変数をちゃんと使うプログラムにするか、削除するかが
正解です。
図2.11 警告ランプの非表示
さて、今度は黄色ランプのアイコンを「クリック」して下さい。すると、Eclipseはこの問題の解決法をいくつか提案 してくれます (図 2.11参照)。解決法はいろいろありそうですが、その中から、「@SuppressWarnings 'unused'を 'x'に追加します」を選択してEnterキーを押して下さい。Suppressは「隠す」ですから、warningsを隠す、unused が「使っていない」ですから、次の行で使っていない変数についてwarningが表示されるんだけど、それを隠します!
という意味になります。
すると、プログラム中に@SuppressWarnings( "unused" )という1行が挿入されたと思います。このアットマー クで始まる行を、「アノテーション(annotation:注釈)」と言って、Java 5で導入されたJavaの機能です。コメントと は違った意味で、プログラムを読む人とコンパイラに情報を与えるものです(コメントは、コンパイラに何の情報も与 えない)。特に、コンパイラにはコンパイル時の付加情報としても利用できます(アノテーションについては後術)。
これで、黄色ランプは消えたかと思います。以降も黄色ランプが出てきたら、まず理由を理解し正しい解決法を選択 できるようになって下さい。
2.5.1 単一行コメント
プログラム中に連続する2つの斜線//を見つけると、コンパイラはそこからその行の終わりまでをコメントと判断 します。従って、行の始めから1行まるまるコメントにするのも可能なら、書かれた処理のすぐ右にその処理のコメン
トを書くなんてことも可能です(「x = 1; // x に 1 を代入」なんて感じ)。一方、コメントの右に処理を書いても( // x に 1 を代入 x = 1;)、それはコメントの一部と判断されるので、実行されません。このことを逆に利用して、
ある行の実行を一時的に実行させないために、行頭に斜線2 本を書き込んで(こうしたことを、コメントアウトすると 言います)、コンパイルして様子を見る、なんてこともします。
Eclipseでは、Ctrl + 7もしくはCtrl + /で「コメントの切り替え」と言って現在カーソルのある行に単一行コ
メントを付けたり消したりしてくれます。知っておくと便利です。
2.5.2 ブロックコメント
連続した複数行のコメントを作成する場合、それらすべての行頭に//を付けても構いませんが、付けたり外したり する手間も大きいし、見栄えもよくありません。そうした場合、最初の行の行頭に /*を置き、最後の行の行末に*/
を置くという方法があります。なお、ブロックコメントの中に別のブロックコメントを入れるとコンパイルエラーにな りますので、ブロックコメントは単独でが原則です。
Eclipseでは、コメントにしたい行を選択した状態でCtrl + Shift + /で「ブロックコメントの追加」、Ctrl +
Shift + \で「ブロックコメントの削除」をしてくれます。
2.5.3 Javadoc 用コメント
付録Cでプログラムのマニュアル(仕様書)作りについて解説します。プログラムは作ったけれど、コメントをいい 加減に書いていたせいで後で使おうとしたら、動かない・改良できないなど、プログラムを結局無駄にした、なんてこ とが良くあります。そうならないために、マニュアルをこまめに作ることが望まれるのですが、結構手間が掛る。プロ グラムを作っているときは、今必要だから作っているので、後でどう使うかはあまり考えていない。で、ついついコメ ントも書かずに。
そんなとき、ちょっとコメントを書く手間で簡単な仕様書が作れる「Javadoc」を学んでおくと、とても便利です。
詳細は付録で書くとして、そのためのコメント「Javadoc用コメント」は、ブロックコメントと同様に、最初の行の行 頭に/**(*が1 つ多い)を置き、最後の行の行末に*/を置くという方法です。Javadoc用コメントには、@で始ま る特別な役割をする「タグ」が用意されていて、それらをちょっと覚えてもらって使うことになります。
2.6.1 整数型 (integer type): byte, short, int, long
整数型にも4種類があります(本によっては文字型を整数型に含めて5種類あると書かれています。その理由は文字 型のところで)。
• byte(バイト):8bits符号付き整数
• short(ショート):16bits符号付き整数
• int(イント):32bits符号付き整数(デフォルトの整数型)
• long(ロング):64bits符号付き整数
使用する状況に応じて使い分けるのですが、述べた順に「表現できる整数値の範囲」が「狭い=⇒広い」となっていま す。Java ではOSやコンパイラによらずデフォルトの整数型intは32bits を用いて1つの整数を表しますが、例え ばC言語ではコンパイラによってint型は16bitsだったり 32bitsだったりします。
符号付きとは、使用するbits の内、最高位の1bitを符号のために使用するという意味です。一方、符号なしとは、
符号bitを持たずに全てのbitsを使って非負の整数を表現する場合を言います。
問題 2.6.1. 整数型で表現できる整数値の範囲を4種類の型でそれぞれ求めなさい。
手計算で正確な値を求めるのは大変なので、Mathematicaを利用しても良い。例えば、byte 型の整数値の最大値は、
8bitsのうち最上位の 1bitが符号として用いられるので、最大値は 7bitsに全て1 が立った1111111 です。この値
は、27−1 ですから、Mathematicaにこの式を入れてShift+Enterすると、127が得られます。
なお、負数の最小値については、その絶対値が正数の最大値より1大きくなります。つまり、byte型では−128です。
整数値は、特に断らなければint型(デフォルトの整数型)の値と見なされ、メモリーの中では32bitsの領域に記 憶されます。では、long型の値を扱うときはどうしたら良いでしょう。たとえば、整数値1234をlong 型として記 憶するには、1234Lもしくは1234l (末尾の lは小文字のL)と数値の末尾に半角のエルの文字を付けます。こうする ことで、この値は64bitsの領域に記憶されます。一方、intより記憶領域の小さなshortやbyte型の値とする場合 は、後述のキャストという方法で記憶します。
各整数型で表現できる整数値の最小値と最大値を次のプログラムで表示してみましょう。(先ほどの問題の答えが、
これで分かります)
ソースコード2.5 IntegerMaxAndMin.java (整数型の最大・最小値)