スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。



Java6の本 Part1まで読んでみた


パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)
(2009/09/24)
アリエル・ネットワーク株式会社、井上 誠一郎 他

商品詳細を見る


気分転換に数日本を読んでいました。
もともと読むのが遅いので,言語仕様の第一部を読むだけでかなり時間がかかってしまいました。

第二部,第三部はサーバプログラミングとGUIになっているので,
あとはゆっくり読もうかなと思ってますwww

読んでいて小さな発見から大きな発見がありました。

J2MEとJava6の大きな違いとしては,

・ジェネリック型に対応
J2MEのVector, Hashtableクラスはジェネリック型コレクションで扱える。
・enum型に対応。(プリプロセス使用しないでよくなる!!)
・反復処理がEnumeratorからIteratorに置き換えられる。(拡張for文 for(var v : values)が扱える)
・staticインポート
・Callableインターフェースでスレッドでも戻り値を返せる。

Java6のクラスライブラリの方が多いので,
なにかを実装するにも自前で作る必要がないのはいいところ。
ただし勉強するにはクラスライブラリ少ないほうがやりやすいかも...と思ってしまった。


J2MEとの差ではないけど発見したこと。

・配列の添え字はint型 (intを超える範囲は扱えない!?)
・Integer型のインクリメント・デクリメント時は新しいインスタンスが生成される。
(Integer型がimmutableなため)
・breakラベルで多重ループの脱出。(boolean使ってた...)
・finallyでのreturnにより戻り値の上書き。(普通やらないけど)


文字列リテラルの扱いについて。

    String s1 = "abc";
    String s2 = "abc";
    String s3 = "a" + "b" + "c";

    if(s1==s2)
    {
        System.out.printIn("same");
    }

同じ文字列を指定しているときは,同一のものとして扱われる。
さらにs1とs3も同値で,同一になる。

文字列リテラルは暗黙的に結合したものに置き換えられているというのは驚きですね。
また同じ値は1つにまとめられている...これも知らんかった。

文字列クラスはimmutable(不変)であるから1つにまとめられるんだな。


さらに文字列周りでの驚きは,

    String s1 = "abc";
    s1 += "def";

+=演算子を使用したときは,暗黙的にStringBuilderクラスが生成されて
文字列結合を実行していると...。
for文内で+=で文字列結合するならば,StringBuilderを自前で生成して
appendしていった方が効率的になる。
簡単に書けちゃうから,わりとやっちゃいがちな実装なので注意。



関連記事
スポンサーサイト

テーマ : 紹介したい本
ジャンル : 本・雑誌




コメントの投稿

非公開コメント

アクセス
あなたは
キーワード
カテゴリー
最近の記事
リンク
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

WEB検索
Google

RSSフィード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。