So-net無料ブログ作成
  • ブログをはじめる
  • ログイン
Effective Java 3rd ブログトップ

『Effective Java 第3版』と『Java Puzzlers』ー パズル 2 ー [Effective Java 3rd]

『Effective Java 第3版』で2番目に言及されているのはパズル2です。

パズル2 変革の時(Time for a Change)

次の文章問題を考えてみてください。
トムは、$1.10するスパークプラグを購入するために自動車部品店に行きますが、財布の中にあるのは2ドル紙幣ばかりです。2ドル紙幣でスパークプラグの代金を支払ったとしたら、彼は、お釣りをいくら貰うでしょうか。
この文章問題を解こうとしているのが、次のプログラムです。このプログラムは、何を表示しますか?
public class Change {
    public static void main(String args[]) {
        System.out.println(2.00 - 1.10);
    }
}
このパズルが言及されているのは『Effective Java 第3版』の「項目60 正確な答えが必要ならば、floatdoubleを避ける」です。

私自身は、金銭計算にfloatdoubleを使うべきではないことをいつ、どこで学んだのか覚えていません。しかし、このパズルのようにfloatdoubleを使ったコードを見かけることがたまにあります。昨年は1回だけ見かけたので、その時は『Effective Java 第2版』の該当項目を教えてあげました。

Effective Java 第3版

Effective Java 第3版

  • 作者: Joshua Bloch
  • 出版社/メーカー: 丸善出版
  • 発売日: 2018/10/30
  • メディア: 単行本(ソフトカバー)

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース

  • 作者: ジョシュア・ブロック
  • 出版社/メーカー: ピアソン・エデュケーション
  • 発売日: 2005/11/14
  • メディア: 大型本

英語版ならKindle版が購入可能です(紙の本も買えるようです)。Kindle版は見たことがないのですが、錯視図はどうなっているのでしょうか(誰か教えてください)。

Java Puzzlers: Traps, Pitfalls, and Corner Cases

Java[トレードマーク] Puzzlers: Traps, Pitfalls, and Corner Cases

  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2005/06/24
  • メディア: Kindle版




スポンサーリンク





コメント(0) 

『Effective Java 第3版』と『Java Puzzlers』ー パズル41ー [Effective Java 3rd]

『Effective Java 第3版』で最初に言及されているのは、パズル41の解答です。パズル41は、以下の通りです。
パズル41 フィールドとストリーム(Field and Stream)

次のメソッドは、1つのファイルを他のファイルへコピーし、I/Oエラーが発生しても、生成したすべてのストリームをクローズするように設計されていました。残念ながら、常にそのようには動作しません。なぜ動作しないのでしょうか? 修正することができますか?
static void copy(String src, String dest) throws IOException {
    InputStream in = null;
    OutputStream out = null;
    try {
        in = new FileInputStream(src);
        out = new FileOutputStream(dest);
        byte[] buf = new byte[1024];
        int n;
        while ((n = in.read(buf)) > 0)
            out.write(buf, 0, n);
    } finally {
        if (in != null) in.close();
        if (out != null) out.close();
    } 
}
言及されているのは、このパズルの解答として書かれていたfinally節のコードです。
} finally {
    if (in != null) {
        try {
            in.close();
        } catch (IOException ex) {
            // closeが失敗しても、できることはない
        }
    }
    
    if (out != null) {
        try { 
            out.close(); 
        } catch (IOException ex) {
            // 再度、closeが失敗しても、できることはない 
        } 
    } 
}
この解答も間違っています。何が間違っているか分かりますか?『Effective Java 第3版』の「項目9 try-finally よりもtry-with-resources を選ぶ」に解説されています。

Effective Java 第3版

Effective Java 第3版

  • 作者: Joshua Bloch
  • 出版社/メーカー: 丸善出版
  • 発売日: 2018/10/30
  • メディア: 単行本(ソフトカバー)

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース

  • 作者: ジョシュア・ブロック
  • 出版社/メーカー: ピアソン・エデュケーション
  • 発売日: 2005/11/14
  • メディア: 大型本



スポンサーリンク





コメント(0) 

『Effective Java 第3版』届きました [Effective Java 3rd]

正式な発行日は10月30日ですが、見本刷りが出来上がったので、土曜日のお昼に出版社から届きました。

EffectiveJava.jpg


2001年に初版を読んだときは、自分自身の無知を自覚しました。1996年夏からJavaを使っていて、すでに5年も経過しているのに、初版からあまりにも学ぶことが多すぎて、衝撃を受けたものです。

今月末までには書店に並ぶと思います。

Effective Java 第3版

Effective Java 第3版

  • 作者: Joshua Bloch
  • 出版社/メーカー: 丸善出版
  • 発売日: 2018/10/30
  • メディア: 単行本(ソフトカバー)


コメント(0) 

『Effective Java 第3版』 [Effective Java 3rd]

Effective Java 第3版

Effective Java 第3版

  • 作者: Joshua Bloch
  • 出版社/メーカー: 丸善出版
  • 発売日: 2018/10/30
  • メディア: 単行本(ソフトカバー)

私にとって17冊目の翻訳本になる『Effective Java 第3版』が今月末には書店に並びます。第2版がちょうど10年前です。第2版は、ジェネリックスを含めた大きな言語仕様の変更がJava 5で行われた後でした。今回は、Java 8でラムダとストリームという言語仕様の変更とライブラリの拡張が行われた後となります。

新たに追加された項目は以下の通りです(項目番号は、第3版の番号です)。
  • 項目9 try-finally よりもtry-with-resources を選ぶ
  • 項目21 将来のためにインタフェースを設計する
  • 項目25 ソースファイルを単一のトップレベルのクラスに限定する
  • 項目32 ジェネリックスと可変長引数を注意して組み合わせる
  • 項目43 ラムダよりもメソッド参照を選ぶ
  • 項目44 標準の関数型インタフェースを使う
  • 項目45 ストリームを注意して使う
  • 項目46 ストリームで副作用のない関数を選ぶ
  • 項目47 戻り値型としてStream よりもCollection を選ぶ
  • 項目48 ストリームを並列化するときは注意を払う
  • 項目55 オプショナルを注意して返す
  • 項目85 Java のシリアライズよりも代替手段を選ぶ
第2版にあった「項目73 スレッドグループを避ける」は引退して削除されています。
既存の項目も見直しが行われています。

今回も翻訳作業を通して原著の間違いを多く発見し、その多くは英版版の4th printingで修正されています。

コメント(0) 

延期:『Effective Java, 3rd edition』 [Effective Java 3rd]

『Effective Java, 3rd edition』の英語版の発売日が延期されたようです。12月29日発売となっています。

Effective Java (3rd Edition)

Effective Java (3rd Edition)

  • 作者: Joshua Bloch
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2017/12/29
  • メディア: ペーパーバック


コメント(5) 

書籍『Effective Java, 3rd Edition』が予約注文可能 [Effective Java 3rd]

発売日が2017年10月29日の予定になっていますが、英語版の『Effective Java, 3rd Edition』が予約注文可能になっています。

Effective Java (3rd Edition)

Effective Java (3rd Edition)

  • 作者: Joshua Bloch
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2017/10/29
  • メディア: ペーパーバック


Effective Java 3rd ブログトップ