コンテンツにスキップ

パーフェクトJava読書メモ chapter 2 文字と文字列

Javaを使うために改訂2版 パーフェクトJavaを読んだメモ

文字列

"(ダブルクォート)で囲んで文字数リテラル

String クラス

  • 文字列リテラルから String オブジェクトが自動生成
  • 配列のように1文字ごとにindexが振られる

StringBuilder クラス

  • オブジェクトに対して破壊的
  • String オブジェクトは read only

文字列の結合

  • +=StringBuilder の関係
  • join メソッド

文字列の比較

  • == 演算子じゃなくて equals メソッド
    • == 比較は同一のオブジェクトへの参照かどうかの比較
  • 同じ文字列リテラルは同じ String オブジェクト
  • ただし StringStringBuilder では文字列の内容が同じでも違うオブジェクト
    • そんなときは contentEquals メソッド
  • StringBuilder 同士の文字列の内容比較もできないので、 toStringString に変換してから contentEquals 使うこと

文字列と数値の変換

数値から文字列への変換

valueOf メソッド

String s = String.valueOf(255);
// s: "255"

toString メソッドで10進数以外に直接変換する

String s = Integer.toString(255, 16);
// s: "ff"

文字列から数値への変換

parseInt メソッド

int i = Integer.parseInt("255");
// i: 255

基数を与えて10進数以外の処理

int i = Integer.parseint("ff", 16);
// i: 255

文字

  • '(シングルクォート)で囲んで文字リテラル
  • Javaの世界ではUTF-16
    • 文字を16bitの数値で表す char
  • 文字リテラルは char 型の数値
  • String オブジェクトは文字( char 型)の配列

バイト

  • 歴史的に文字とバイトは同一視されがち
  • Javaではバイトを文字と区別する
  • 8bit長の byte
  • バイト列は byte 型の配列

バイト列と文字列の変換

バイト列から文字列への変換

byte の配列を渡して String オブジェクトを生成

byte[] bytes = new byte[]{0x61, 0x62, 0x63};
String s = new String(bytes);
// s: abc

文字列からバイト列への変換

getBytes メソッドを使う

String s = "abc";
byte[] bytes = s.getBytes();

参照

改訂2版 パーフェクトJava