Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで7~9

7-1-2 文字列を結合する3つの方法

  • ローカル変数など、複数のスレッドからアクセスされない → StringBuilderクラス
  • 複数のスレッドから使われる場合 → StringBufferクラス

7-1-4 複数の文字列を連結する

  • String.joinメソッド

7-2-4 Stringクラスのメソッドで正規表現を使う

  • 1回だけ文字列処理をおこなう場合(アプリケーションを起動するときの引数処理など) → Stringクラスを使って簡潔に書く
  • 大量の文字列を繰り返し処理する場合(ログファイルの処理など) → 自分でPatternクラスのオブジェクトを生成し、オブジェクトを使いまわす

7-3-2 MessageFormatについて

7-4-4 文字化けの原因と対策

  • デフォルトエンコーディングを使わない事を徹底する
    • Stringコンストラクタ(引数なしのもの)
    • StringクラスのgetBytesメソッド(引数なしのもの)
    • FileReaderクラス
    • FileWriterクラス
    • InputStreamReaderコンストラクタ(引数なしのもの)
    • OutputStreamWriterコンストラクタ(引数なしのもの)
  • 対策
    • FileReaderクラス、FileWriterクラスは使わずに、FileInputStreamクラスとInputStreamReaderクラスで代用する
    • それ以外のメソッドやコンストラクタでは、必ずエンコーディングやcharsetを指定する

8-1-1 Fileクラスで初期化する

  • File.separator

8-1-2 Pathクラスで初期化する

  • Pathクラスを用いたソースコードを書くようにし、既存のライブラリを扱うなどの必要に応じてFileクラスに変換する
  • Pathsより生成する

9-2-1 Date and Time APIのメリット

  • 日付・時間・日時をそれぞれ別クラスで扱うため、必要に応じて使い分けできる
  • 年月日などを指定してインスタンスを生成できる
  • 年月日の各フィールドの値を個別に取得できる
  • 年月日の計算ができる
  • イミュータブルである

9-2-2 日付・時間・日時をそれぞれ別クラスで扱う

  • 日付 → java.time.LocalDateクラス → 年、月、日
  • 時間 → java.time.LocalTimeクラス → 時、分、秒、ナノ秒
  • 日時 → java.time.LocalDateTimeクラス → 年、月、日、時、分、秒、ナノ秒

9-3-3 SimpleDateFormatクラスはスレッドセーフではない

9-4-3 DateTimeFormatterクラスはスレッドセーフ

9-5-1 西暦を和暦に変換する

kameyatakefumi.hatenablog.com
kameyatakefumi.hatenablog.com