Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

書籍 パーフェクトJava | 文字について

パンくず

書籍 パーフェクトJava
文字について

概要

文字について

文字について

Javaの文字はUnicodeで扱われます。
Unicodeは1文字2バイトで取り扱われるため、
Javaで文字を表すデータ型であるcharは2バイトの数値で表されます。

通常のJavaの処理は文字列が基本であるため文字を意識する必要はありませんが
処理上どうしても1文字単位での処理が必要な場合はchar型での処理を行います。

文字リテラルについて

シングルクォーテーションで1文字を囲うと文字型として取扱出来ます。

char = 'a';

Rubyのシングルクォーテーションとは意味が異なるので注意

エスケープ文字一覧

シーケンス 内容
\n 改行(LF)
\t タブ
\b ベル
\r 改行(CR)
\f フィード
\\ バックスラッシュ
\' シングルクォート(文字の場合のみ)
\" ダブルクォート(文字列の場合のみ)
\ddd 8進数。dは0-7の数値
\uxxxx Unicodeのコード

文字と文字列の変換

以下のサンプルの内容で変換を行うことが出来ます。

サンプルコード

package perfect.string;

public class Perfect2_3_1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// Stringからcharへの変換
		System.out.println("String to char[]");
		String hoge = "hoge";
		char[] chars = hoge.toCharArray();
		int i = 1;
		for (char ch : chars) {
			System.out.println(i + ":" + ch);
			i++;
		}
		System.out.println("-----------------------------------");
		System.out.println("StringBuilder to char[]");
		// StringBuilderからcharへの変換
		StringBuilder sb = new StringBuilder("hage");
		char[] charsSb = new char[sb.length()];
		sb.getChars(0, chars.length, charsSb, 0);
		i = 1;
		for (char ch : charsSb) {
			System.out.println(i + ":" + ch);
			i++;
		}

		System.out.println("-----------------------------------");
		System.out.println("char[] to String");

		char[] charsRev = {'h', 'i', 'g', 'e'};
		String hogeRev = new String(charsRev);
		System.out.println(hogeRev);

		System.out.println("-----------------------------------");
		System.out.println("char[] to StringBuilder");

		char[] charsRevSb = {'h', 'u', 'g', 'e'};
		StringBuilder hogeRevSb = new StringBuilder();
		hogeRevSb.append(charsRevSb);
		System.out.println(hogeRevSb);
	}
}

出力

String to char[]
1:h
2:o
3:g
4:e
-----------------------------------
StringBuilder to char[]
1:h
2:a
3:g
4:e
-----------------------------------
char[] to String
hige
-----------------------------------
char[] to StringBuilder
huge