** finalだけど表示するたびに違う値になる謎 [#y51ad940]
> 温かい。今日も事務所でプログラミング。ログイン周りが結構微妙なコードになっていたのでリファクタリングしていた。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円 と表示された
 }
----
#comment(nodate);

[ 編集 | 差分 | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]