finalだけど表示するたびに違う値になる謎

温かい。今日も事務所でプログラミング。ログイン周りが結構微妙なコードになっていたのでリファクタリングしていた。Stringクラスがfinal classなおかげで僕たちはこんにち、とても気持よくプログラミングができるんだねという話になった。例えばサンプルに作った以下のコードはとっても不思議な状態になっている。値段の所が、表示するたび、また実行するたびにも違う数字になる。これはどういう現象が起こっているのだろう?

pulbic static void main(final String[] args) {
   final BookContainer container = BookContainerFactory.getContainer();
   final Book theBook = container.get(0); // Bookはタイトルと値段を持つEntity
   final String name = theBook.getName();
   final BigInteger price = theBook.getPrice(); // 実行途中でpriceの参照が変わることは絶対無い…はず。

   System.out.printf("%s: %d円\n", name, price.intValue()); // Effective Java: 365921461円 と表示された
   System.out.printf("%s: %d円\n", name, price.intValue()); // Effective Java: 1444925943円 と表示された
   System.out.printf("%s: %d円\n", name, price.intValue()); // Effective Java: 1038677077円 と表示された
}


[ 編集 | 凍結 | 差分 | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]
Last-modified: 2011-03-11 (金) 23:40:10 (4794d)