まとめ①
浮動小数点演算について
http://docs.oracle.com/cd/E19957-01/806-4847/ncg_goldberg.html
インクリメントのタイミング
C++は不定。次の行までにインクリメントされることが保証されている
Javaは一定
a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8)
a = 5;
i=a++ + ++a + ++a; =>
i=5 + 7 + 8; (a=8)
例からわかるように前置インクリメンタルはその自身の値を評価するタイミングではインクリメントされず、次の値を評価する時にはインクリメントされている。
i=a++ + a++ + a++;なら
i=5 + 6 + 7; (a=8)
i=18となる。
Javaにおけるオブジェクト
メモリ上に確保されたフィールド値を格納する領域 + αがオブジェクト
配列の要素番号の型がlongではなくてintである理由
単純に言語仕様を決定した当時はそれで十分だったから。
ちなみにJavaのBinarySortは巨大な配列をソートする場合に生じるバグを含んでいたが、Java開発当初はそのような配列が作成されることがなかったため、しばらくバグを含んだままの状態であった。