文字列同士の結合
+
演算子の左右のオペランドが文字列の時、演算子は文字列結合として機能する。
1 |
System.out.println("ABC" + "DEF"); // ABCDEF |
文字列以外との結合
数値との結合
左右のオペランドの何れか1つが文字列の時も文字列結合として機能し、他方のオペランドは文字列に変換された後に結合される。
以下は文字列と数値を+
演算子で結んだ場合で、数値が文字列に変換されて結合される。左右とも数値の場合は、当然数値の加算演算子として機能する。
1 2 3 |
System.out.println("ABC" + 123); // ABC123 System.out.println(123 + "ABC"); // 123ABC System.out.println(123 + 456); // 579 |
char型との結合
char
型の場合も文字列として結合される。左右ともchar
型の場合はchar
同士の値の加算(以下の例では’a’ + ‘b’ = $61 + $62 = $C3 = 195)。
1 2 3 |
System.out.println("ABC" + "d"); // ABCd System.out.println('a' + "BCD"); // aBCD System.out.println('a' + 'b'); // 195 |
一般的のオブジェクトとの結合
+
演算子のオペランドの1つが文字列で他方がそうでないとき、演算子は文字列でない方のオペランドの文字列表現を結合する。
たとえば配列同士の+
演算子は定義されていないが、文字列と配列を+
演算子で結ぶと配列の方が文字列表現(ハッシュ)になり、もう1法の文字列と結合される。
1 2 3 4 5 |
int[] array1 = {1, 2, 3}; int[] array2 = {4, 5, 6}; // System.out.println(array1 + array2); // +演算子の未定義エラー System.out.println(array1 + "ABC"); // [I@41a4555eABC System.out.println("ABC" + array1); // ABC[I@41a4555e |
以下の例はtoString()
が実装されたクラスのオブジェクトと文字列の結合例で、List
オブジェクトが文字列化された後に結合されている。
1 2 3 4 |
String[] str = {"D", "E", "F"}; java.util.List<String> list = java.util.Arrays.asList(str); System.out.println("ABC" + list); // ABC[D, E, F] System.out.println(list + "GHI"); // [D, E, F]GHI |