コンパイル
- 1つのファイルに複数のクラスがあるときは、ファイル名はファイルの中のどのクラス名でも良い。で、そのファイル名を指定してコンパイルする。
- 複数のファイルにそれぞれクラスがあるときは、一番外側(?派生クラスとかクライアントクラスとか)のファイル名を指定してコンパイルする。
- 異なるディレクトリにファイルが存在するときは、-classpath オプションでそのディレクトリを指定する。または、環境変数 CLASSPATH に指定する。
プリミティブ型
- unsinged はない
- byte: 1バイト、short: 2バイト、int: 4バイト、long: 8バイト
- float: 4バイト浮動小数点数、double 8バイト浮動小数点数
- それぞれのクラスが存在し、publicなフィールド値が定義されてる。(Integer.MAX_VALUEとか)
long
リテラルに"L"を付けないと、8バイトとして扱われない
long l1 = 0xFFFFFFFF;
long l2 = 0xFFFFFFFFL;
System.
out.
println("l1: " + l1
+ " l2: " + l2
); l1++;
l2++;
System.
out.
println("l1: " + l1
+ " l2: " + l2
);
出力
l1: -1 l2: 4294967295
l1: 0 l2: 4294967296
float
リテラルに"F"を付けないと、コンパイルエラー
右シフト
>> 算術右シフト
- 符号ビットが1(負数)のときは1がMSBに追加される
- 符号ビットが0(正数)のときは0がMSBに追加される
int i1 = -1, i2 = 0x7FFFFFFF;
System.
out.
println("i1: " + (i1
>> 1) + " i2: " + (i2
>> 1));
出力
i1: -1 i2: 1073741823
>>> 論理右シフト
int i1 = -1, i2 = 0x7FFFFFFF;
System.
out.
println("i1: " + (i1
>>> 1) + " i2: " + (i2
>>> 1));
出力
i1: 2147483647 i2: 1073741823
String型の比較
== ではなく String.equals() を使う
if (s1 == s2) { // 文字列の比較ではない
} else {
System.
out.
println("unmatch"); }
出力
unmatch
switch 文
switch(n) の n は int 型でないとならない
for 文のラベル
ラベルの指定で、多重ループを一気に抜けられる
int i = 0, j = 0;
LOOP_1:
for (i=0; i<10; i++) {
for (j=0; j<10; j++) {
if (i==1 && j==5) {
break LOOP_1;
}
}
}
System.
out.
println("i: " + i
+ " j: " + j
);
出力
i: 1 j: 5
最終更新:2012年03月27日 23:21