Java FAQ:型変換のまとめ
- 数値 -> 文字列: String.valueOf(x) か new Integer(i).toString() か Integer.toString(i) など
- 数値 -> n進数の文字列: Integer.toBinaryString(i), Integer.toOctalString(i), Integer.toString(i, n), Integer.toHexString(i) など
- 数値オブジェクト -> n進数の文字列: obj#intValue() などでプリミティブ型に落してから、Integer.toBinaryString(i), Integer.toOctalString(i), Integer.toString(i, n), Integer.toHexString(i) など
- オブジェクト -> 文字列: obj#toString()
- 文字列 -> 数値: Integer.parseInt(s), Double.parseDouble(s) など
- 文字列 -> 数値 n進数として: Integer.parseInt(s, n) など (ただし、"0x10" など prefix がついたものは読めない)
- 文字列 -> 数値オブジェクト n進数として: Integer.decode(s) ("0x10" など prefix がついたものが読める)
- 数値オブジェクト -> 数値: obj#intValue() など
- 数値 -> 数値オブジェクト: new Integer(i) など
気がついた点
- Java FAQ には文字列をn進数として変換するという項目がない?
- Boolean の *Value() には Boolean.booleanValue() しかない
- Character の *Value() には Character.charValue() しかない
- 数値 -> 文字列は、プリミティブ型からのパスしか用意されていない(といっても、単純な変換は obj#toString() すれば良いだけだが)
- parse* はプリミティブ型に、Integer.decode(s) は数値オブジェクトに変換されるという違いがなぜかある
- Integer.parseInt(s, n) で n進数として読む場合には、"0x10" など prefix がついたものは読めないし、prefix がついたものが読める Integer.decode(s) では(自動判定なので) n進数として読むという指定ができない
- 2進数に対応するリテラルがない