boolean (1) : false (*) / true
byte (8) : -128 - 127
char (16) : 0x0000 - 0xffff ('\u0000' - '\uffff'
short (16) : -32768 - 32767
int (32) : -2^31 - 2^31-1
long (64) : -2^63[Ll] - 2^63-1[Ll]
float (32) : 3.4E38[Ff] - 1.4E-45[Ff]
double (64) : 1.8E308 - 4.9E-324
FやLを指定しない場合には、縮小変換となる可能性がある
基本データ型において、変換元のデータサイズ以上のサイズを格納先がもっていれば暗黙的に変換
参照型において、親型へのキャストは暗黙変換
範囲内であるint 変数を byte / short / char へ変換する際は、暗黙変換 それ以外では例外発生
参照型において、子型へのキャストはもともとその子型で生成していること(実行時例外発生)と、型名を指定する必要(コンパイルエラー)がある
&& / || / ?: 以外の演算子に対し、左から評価される
f1 () + f2() では f1とf2が評価されて + が実行
一つのオペランドに作用するもの
x はビット反転、-x-1になる
整数を0で割ると、Arithmetic Exceptionが発生
浮動小数点数をゼロで割るとDouble.POSITIVE_INFINITYなどになる
NaN かどうかの判断は、== Double.NaN ではなく、Double.isNaN()メソッドを使う
左オペランドが32ビットより小さい型のとき、まず32ビットに拡張され演算後元のサイズに戻される
右オペランドが32ビットより大きいとき、32で割った余りに変換される
新しいビットは << と >>>で0になり、>>では左端のビットで決められる
シフトではみ出すビットは捨てられる
0 / 1 または、boolean 値にも作用する & (AND) / | (OR) / ^ (XOR)
大小の比較は、byte / short / char / intのみ byte / short / char は、演算により数値昇格されintに変換される
x instanceof Y演算子は、参照型の場合そのYへのキャストを調べる
論理演算子 && や || では、短絡的評価が行われる
条件演算子 X ? A : B では、Xの真偽でAかBどちらかのみが評価される
x = y = z = 3は右から代入されている x = y = (z=3) -> x = (y=z) -> x=y
複合代入演算 x op= y では、x = x op y その時暗黙的な型変換が行われる
引用符で囲む エスケープシーケンス \u \b \t \n \f \r \" \' \\
二重引用符で囲む エスケープシーケンスは文字リテラルと同じ
参照型変数は、== / != によりオブジェクトが同一の物を指すかどうかを判断する
通常の参照型変数であれば、equals は == と等価であるが、String オブジェクトでは同じ文字列リテラルを指すかどうかを判断する
一時非配列変数を除く全ての変数は、初期化しない場合デフォルト値で初期化される(フィールドと配列要素)
基本データ型で作られた配列は、参照型オブジェクトとなる
次元ごとに異なる大きさを持つことができる
ObjectクラスのtoStringメソッドは、「クラス名@ハッシュコード」を返す
基本データ型からラッパークラスへの暗黙変換はない
== や equalsなどで比較することもできない