7.1 字句要素
7.1.1 文字セット
C++含め、多くの言語の文字コードはASCIIないしEBCDICだが、JavaはUTF-16。
7.1.2 コメント
コメントのネストはできない。そして、プリプロセッサマクロがないので、# if 0も使えない。if (false) て……。まあ、IDEを使っていれば一括コメントアウトも簡単だろうから、別に問題はなさそうだけど。
7.1.3 トークン
字句解析では、「欲張りな」字句解析が行われる。すなわち、字句解析では、トークンを作り出すのにできるだけ多くの文字を取り込む。
まあ、それを意識しないといけないようなコードを書くべきではないと思うので、あまり気にすることなさそうだけど。
7.1.4 識別子
7.1.5 予約語
(†が付いた予約語は、予約されていますが、現在は使用されていません)
...
const†
(^^)
7.2 型とリテラル
符号なし整数型はありません。
おっ……。
7.2.1 参照リテラル
nullは唯一の参照リテラル。
7.2.2 ブール値リテラル
7.2.3 文字リテラル
7.2.4 整数リテラル
整数定数はデフォルトでint。末尾にlないしLをつければlongになる。
7.2.5 浮動小数点リテラル
浮動小数点定数はデフォルトでdouble。末尾にfないしFをつければfloatになる。
7.2.6 文字列リテラル
7.2.7 クラスリテラル
7.3 変数
7.3.1 フィールドとローカル変数の宣言
フィールドにはデフォルトの初期値があるが、ローカル変数にはないので、必ず明示的に初期化する必要がある。
7.3.2 パラメータ変数
7.3.3 final変数
ブランクfinal、ちょっと便利かも。
使用される前に初期化されていることをコンパイラーが保証してくれるというのがよい。
7.4 配列変数
7.4.1 配列修飾子
Javaにconstはありません。
7.4.2 配列の配列
7.4.3 配列の初期化
7.4.4 配列と型
7.5 名前の意味
- パッケージ名
- 形名
- フィールド名
- メソッド名
- ローカル変数名(パラメータを含む)
- ラベル
このことから、Javaではこんなことができる。
package Reuse;
class Reuse {
Reuse Reuse(Reuse Reuse) {
Reuse:
for (;;) {
if (Reuse.Reuse(Reuse) == Reuse)
break Reuse;
}
return Reuse;
}
}
ゲェーッ!
ま、やんないけど……。
一方で、隠蔽は、コードブロック内のネストしたスコープでは許されていない。
よって、Javaではこんなことができない。
{
int uber = 0;
{
int uber = 2;
// ...
}
}
第10章(「制御の流れ」)までは割と慣れ親しんだトピックで、こんな具合にごちゃごちゃ言いながら読み進めていけそうなので、そうします。
第11章(「ジェネリック型宣言」)以降はだんだん耳慣れない話題になっていくので、スタイルを変えようと思います。たぶん、読んだことの報告だけになるかもしれません……。