Javaでは、文字列データを扱う際に主にStringクラスを利用します。
Oracle社Java8APIもご参照下さい。
Stringクラスは、""(ダブルクオテーョン)で示した任意の文字列を管理します。
String( "任意の文字列" );
Stringオブジェクトの生成
String hoge = new String("hoge");
String hogehoge = "hogehoge";
Stringクラスには13のコンストラクタがあり、さまざまなソース(文字の配列など)を使用して文字列の初期値を指定できます。
String( char[] );
Stringオブジェクトの生成
char[] charArrays = { 'H' , 'e' , 'l' , 'l' , 'o' };
String str = new String( charArrays );
strには「Hello」が管理されます。
Stringの文字列長を求めます。
Stirngオブジェクト.length()
lengthの利用方法
String str = new "あいうえあ";
System.out.pritln("あいうえおの長さ=" + str.length() );
文字列の言語に関係なく文字列長をlength()で求められました。
情報をファイル、データベースなどに保存するときには、文字列長よりバイト長で格納する情報のサイズの上限を決めます。
特にIoTなどの組み込み系や携帯開発などのハードウェアの資源が乏しい環境では特にバイト長による上限を求められます。
Stirngオブジェクト.getBytes().length
バイト長の利用方法
String str = "あいうえあ";
String str2 = "ABCDE";
System.out.println("あいうえおの長さ=" + str.length() );
System.out.println("ABCDEの長さ=" + str2.length() );
System.out.println("あいうえおのバイト長=" + str.getBytes().length );
System.out.println("ABCDEのバイド長=" + str2.getBytes().length );
実行結果
あいうえおの長さ=5
ABCDEの長さ=5
あいうえおのバイト長=15
ABCDEのバイド長=5
私のWindows10(64bit)の出力結果です。日本語文字1文字に3バイト利用しているのが判断できます。
文字列の連結には、演算子「+」を用いる方法とStringのインスタンスメソッドを利用する方法があります。
"任意の文字列1" + "任意文字列2"
"任意の文字列1".concat("任意文字列2")
演算子「+」を利用されるケースが多いです。
ただし、連結する文字列数や連結数が多い場合には、StringBufferクラスを利用する方がコスト(メモリの使用量)が低いため、望ましいです。
文字列の定型文字に任意の文字列を当て込んだり、文字形式を決めるためにクラスメソッドのformatが用意されています。
String.format("フォーマット文字列" , Object型引数1, Object型引数2...Object型引数N)
formatの利用方法
Integer a = new Integer(100);
Float b = 3.1415f;
String c = "百十ー";
java.util.Date now = new java.util.Date();
String strFormat ="%d is a Integer value.\n %.2f is Float value.\n %s is a String Value.\n Now is %tY年 %tm月 %td日";
String result = String.format( strFormat , a , b, c , now , now , now);
System.out.println( result);
//標準出力に出力する場合には、次のようになります。
System.out.format( strFormat, a , b, c , now , now , now);
実行結果
100 is a Integer value.
3.14 is Float value.
百十ー is a String Value.
Now is 2017年 03月 02日
//上記4行が2回出力されます。