yuu_nkjm blog
2008-12-17(Wed) [長年日記]
[Java][Scrap] Javaの実装イロイロ
株式会社エス・ジーさんのJava講座で取り上げられていた内容のうち,僕が気になったものを抜き書きします.
2. 堅牢性を獲得する章
2.5. 配列フィールド定数 『目的』 定数として用意した配列は書きかえられないようにしましょう。 『まとめ』 書き方を改めることで「定数」となります。 final修飾子は参照を不変にするだけで内容までは不変にしてくれません。
3. 拡張性/柔軟性を獲得する章
valueOf:型変換的なファクトリーメソッド getInstance:それ以外なファクトリーメソッド
改行コードをハードコーディングしないようにします。 // 改行を文字列に含める StringBuffer str = new StringBuffer(); str.append("Hello"); // プラットフォームに適した改行コードを取得\ str.append(System.getProperty("line.separator")); str.append(name); 『まとめ』 改行コードはハードコーディングしないこと。 改行コードが欲しければSystem.getProperty("line.separator")を使うこと。
4. 知っていると便利な章
4.10. コレクションと配列のやりとり 『目的』 コレクションと配列間のやりとりを簡潔に行いましょう。 /* Collection -> 配列 */ String[] strings = (String[]) values.toArray(new String[values.size()]); 『まとめ』 Arrays.asListとCollection.toArrayの組み合わせが配列ベースのAPIとコレクションベースのAPIの橋渡しをします。 ArraysやCollectionには便利なメソッドが色々用意されているので積極的に使いましょう。
5. 最適化の章
Java講座 > 5.1. ループ条件部でメソッドコールしない
5.1. ループ条件部でメソッドコールしない ループ条件でのメソッド呼び出しを避けて実行速度を上げましょう。 List strings = Collections.synchronizedList(new ArrayList()); : for (int i = 0, n = strings.size(); i < n; i++) { : }
5.2. ループ内でインスタンス化しない 『目的』 インスタンス化方法を改善してメモリ管理の負荷を下げましょう。 ループ外で作ったものをループ内で使い回すようにします。 StringBuffer sb = new StringBuffer(); /* ループ外に出した */ for (int i = 0; i < max; i++) { sb.append("loop: "); sb.append(i); System.out.println(sb.toString()); sb.setLength(0); /* 使い回すので内容をクリア */ }
Java講座 > 5.3. try-catch ブロックはループ外に置く
5.3. try-catch ブロックはループ外に置く 『目的』 try-catch ブロックの書き方で実行速度を改善しましょう。 try-catch ブロックの括りを外に出してみます。 try { /* 括りをループの外に出しました */ for (int i = 0; i < MAX; i++) { FileInputStream fis = new FileInputStream("c:\\hoge\\foo\bar.dat"); } } catch (FileNotFoundException e) { /* 繰り返して行う必要がない例外処理。 */ }
- https://www.google.co.jp/ ×70
- http://search.fenrir-inc.com/?hl=ja&safe=off&chann... ×1
- http://aries/index.html ×1
- http://jp.hao123.com/yahoo-search-demo-sample?quer... ×1
- java ループ インスタンス ×13 / java stringbuffer 改行 ×5 / java ループ内 インスタンス ×5 / java try ループ ×4 / java try catch ループ ×4 / 定数 配列 java ×4 / java インスタンス ループ ×4 / java try 繰り返し ×3 / java append 改行 ×3 / java ループ内 new ×3 / java ループの外 ×2 / java valueOf() 実装 ファクトリーメソッド ×2 / java 繰り返し インスタンス ×2 / java エクセル 改行 コレクション ×2 / java StringBuffer 改行 ×2 / java インスタンス 繰り返し ×2 / java ループ try ×2 / Java ループ インスタンス ×2 / java インスタンス ループ内 ×2 / java ループ内String 速度 ×2 / java StringBuffer append 改行コード ×2 / java 繰り返し インスタンス化 ×1 / Java ループ内 catch ×1 / java 配列定数 ×1 / java stringbuffer 改行コード ×1 / try catch ループ ×1 / java try 処理速度 ×1 / Android 改行コード ハードコーディング ×1 / java toarray ループ list 速度 ×1 / stringbuffer 使いまわす ×1 / try catch 2008 JAVA LINE ×1 / java try catch 繰り返し ×1 / java インスタンス ループの中 ×1 / java try catch ループ 性能 ×1 / 改行コード 変換 log4j ×1 / java クラス インスタンス ループ 使い方 ×1 / java loop 改行 ×1 / java インスタンス化 ループ ×1 / java 堅牢 コーディング ×1 / java メモリ ループ内 インスタンス化 ×1 / java ループ内 try ×1 / ループ内 インスタンス ×1 / java for loop try catch ×1 / java インスタンス 生成 繰り返し ×1 / インスタンス ループ内 ×1 / Java try/catchとforループ ×1 / ハードコーディング 配列 ×1 / Java 実装いろいろ ×1 / JAVA ループ内 インスタンス ×1 / StringBuffer 改行 Android ×1 / java try 負荷 ×1 / ループ内 インスタンス化 ×1 / append 改行 ×1 / java try catch 負荷 ×1 / java インスタンス for文繰り返し ×1 / java stringbuffer setlength 0 クリア ×1 / java インスタンス化 ループの外 ×1 / Java try catch ループ ×1 / java loop インスタンス ×1 / for (int i = 0, n = strings.size(); i < n; i++) { ×1 / java 定数 配列 ×1 / java Stringbuffer 改行 ×1 / 配列フィールド定数 ×1 / sqlite FileInputStream ×1 / java 配列 改行 削除 1.8 ×1 / java stringbuffer append 改行 ×1 / try catch ループ java ×1 / ロードマップ 書き方 ×1 / java catch 繰り返し ×1 / StringBuffer 改行コード 削除 ×1 / Java ループの中でNEW ×1 / StringBuffer 改行 ループ ×1 / Java Loop インスタンス生成 ×1 / ループ内 メモリ管理 ×1 / java try catch ループ内 ×1 / java 改行コード StringBuffer ×1 / java tryブロック ループ内 ×1 / java 最適化 ループ内でインスタンス ×1 / Java tryブロック catch 最適化 ×1 / java ループ内でnew ×1 / ループの外 try java ×1 / java ループ インスタンス化 ×1 / try catch 負荷 ×1 / try catch 速度 Java ×1 / java 改行コード ハードコーディング ×1 / Java 改行コード ×1