Javaでは+の演算子は「足し算」だけでなく「文字列を連結」する演算をおこなうことができます。
+演算子の特徴
+の演算子は被演算子の両方が数値であれば足し算を行います。
しかし、+演算子の被演算子の左右いずれかに文字列が含まれると強制的に文字列連結となります。
「数値 + 文字列」の場合は、左辺の数値が文字列に変換(文字列 + 文字列)され、文字列同士が連結された演算結果となります。
式 | 左辺(型) | 右辺(型) | 結果(型) |
---|---|---|---|
1 + 2 | 1(数値) | 2(数値) | 3(数値) |
1 + “2” | 1(数値) | 2(文字列) | 12(文字列) |
“1” + 2 | 1(文字列) | 2(数値) | 12(文字列) |
足し算を行いたい場合は、左右の両方が数値でなければなりませんので、型に注意して加算しましょう。
足し算と文字列連結が混在する式
例えば、以下のような出力処理を記述したとします。
System.out.println(“12567 + 345 = ” + 12567 + 345);
上記、出力処理内では、文字列と数値が混在した演算となっています。
赤線の部分が文字列、他は数値です。
“12567 + 345 = “ + 12567 + 345
(文字列 + 数値 + 数値)
このような式の場合は、左から+が行われることになりますので、文字列と数値の+演算が行われる為、文字列連結となります。
“12567 + 345 = “ + 12567
(文字列 + 数値)
結果は、”12567 + 345 = 12567“という文字列となり、その文字列と345という数値の+演算が行われます。
“12567 + 345 = 12567” + 345
(文字列 + 数値)
結果は、”12567 + 345 = 12567345“という文字列となり、足し算が行われません。
数値と文字列の式が混在する場合は、()を利用して演算の優先順位をかえてあげると足し算を行うことが可能です。
System.out.println(“12567 + 345 = ” + (12567 + 345));
この式では、 (12567 + 345)内の演算から先に行われる為、どちらも数値となり足し算が行われます。
具体的には以下のような順序で演算が行われます。
“12567 + 345 = ” + (12567 + 345)
↓
“12567 + 345 = ” + 12912
↓
“12567 + 345 = 12912”
文字列連結 サンプルプログラム
以下のプログラムを「Number12.java」という名前でworkフォルダ内に保存します。
保存が完了したら、コマンドプロンプトを起動し、コンパイルおよび実行を行ってみましょう。
1 2 3 4 5 6 7 8 9 10 |
class Number12{ public static void main(String[] args){ //文字列連結 System.out.println("サイト名は" + "JavaRU"); //この場合は足し算が行われない System.out.println("12567 + 345 = " + 12567 + 345); //演算の優先順位を変更し、足し算を行う System.out.println("12567 + 345 = " + (12567 + 345)); } } |
実行例
c:\work>javac Number12.java
c:\work>java Number12
サイト名はJavaRU
12567 + 345 = 12567345
12567 + 345 = 12912
※実行例はコンパイルから実行までの例を表示しています。
まとめ
- +演算子を利用した際に被演算子のいずれかが文字列だと文字列連結になる
- 足し算と文字列連結を同じ式の中で記述する際には優先度を意識して記述する