yuu_nkjm blog


2008-12-17(Wed) [長年日記]

[Java][Scrap] Javaの実装イロイロ

株式会社エス・ジーさんのJava講座で取り上げられていた内容のうち,僕が気になったものを抜き書きします.

2. 堅牢性を獲得する章

Java講座 > 2.5. 配列フィールド定数

2.5. 配列フィールド定数  『目的』
定数として用意した配列は書きかえられないようにしましょう。 
『まとめ』
書き方を改めることで「定数」となります。
final修飾子は参照を不変にするだけで内容までは不変にしてくれません。 

3. 拡張性/柔軟性を獲得する章

Java講座 > 3.1. ファクトリーメソッド

 valueOf:型変換的なファクトリーメソッド
 getInstance:それ以外なファクトリーメソッド 

Java講座 > 3.8. 改行コード

改行コードをハードコーディングしないようにします。
// 改行を文字列に含める
StringBuffer str = new StringBuffer();
str.append("Hello");
// プラットフォームに適した改行コードを取得\
str.append(System.getProperty("line.separator"));
str.append(name);
『まとめ』
改行コードはハードコーディングしないこと。
改行コードが欲しければSystem.getProperty("line.separator")を使うこと。 

4. 知っていると便利な章

Java講座 > 4.10. コレクションと配列のやりとり

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++) {
  :
}

Java講座 > 5.2. ループ内でインスタンス化しない

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) {
    /* 繰り返して行う必要がない例外処理。 */
}
本日のリンク元
その他のリンク元
検索

トップ «前の日記(2008-12-16(Tue)) 最新 次の日記(2008-12-24(Wed))» 月表示 編集 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|