** 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);