疑問

JavaのNaNがおかしい(というか、Doubleがおかしい)

doubleはNaN*1を値として取ることができる(その他にも、正の無限大、負の無限大をとることもできる)。これはIEEE 754で決められている。 NaNはNaNと比較しても等しくないという性質を持っている。つまり、 // aはNaNになる。 double a = 0.0 / 0.0; System…

Singleton 変則double-checked locking

問題の理解に誤りがあったので追記しました。(2008-07-27) Singletonパターンを用いるときに、次のような書き方をすることがある。 public class SingletonA { // ただ一つのインスタンスを保持するためのフィールド。 private static SingletonA instance =…

Javaの配列の初期化の謎

Javaの配列は↓のように初期化することができる。 int[] a={11, 2, 7, 3, 5}; このことはJava言語規定 - 10.6 配列初期化子にも書かれている(英語原文はこちら)。 でも、実は次のような書き方をすることもできる。 int[] a=new int[]{11, 2, 7, 3, 5}; {}だ…