文字列の連結

広告

「+」演算子は算術演算子の加算や単項演算子としても使われていますが文字列に対して使用すると文字列と文字列を連結する演算子となります。

文字列1 + 文字列2

次の例を見てください。

System.out.println("目覚まし" + "時計");

上記では「目覚まし」と「時計」という2つの文字列を連結しています。文字列を連結するというのは左側の文字列の後ろに右側の文字列をつなげた文字列となります。よって「目覚まし時計」という文字列を画面に出力することになります。

文字列と数値の連結

「数値 + 数値」の場合は加算された結果となり、「文字列 + 文字列」の場合は文字列が連結されます。では「文字列 + 数値」や「数値 + 文字列」の場合はどうなるのでしょうか。「+」演算子は左辺または右辺の値が文字列であった場合、もう片方の数値を文字列に変換して文字列を連結します。

次の例を見てください。

System.out.println("200" + 9);

「+」演算子の左辺が文字列なので右辺の数値は文字列に変換されます。よって次のように記述したかのように処理されます。

System.out.println("200" + "9");

結果的に「2009」が画面に出力されることになります。

文字列連結の順序

「+」演算子の結合規則は左ですので、式の中に複数の「+」演算子が含まれる場合は左から順に連結が行われます。

次の例を見てください。

System.out.println(100 + 80 + "$");

この場合、まず100と80の加算が行われます。そして次の「+」演算子の右辺は文字列ですので、先ほどの加算の結果である180と「$」が文字列連結され最終的に「180$」が画面に出力されることになります。

これを次のようにすると処理内容が変わってきます。

System.out.println("$" + 100 + 80);

この場合、まず「$」と100の文字列連結が行われます。そして次の「+」演算子の左辺は文字列ですので先ほどの連結の結果である「$100」と80が文字列連結されます。最終的に「$10080」が画面に出力されることになります。

文字列を連結する場合はケアレスミスが発生しやすいので、必要であれば括弧を使うようにして演算の順序を明確にして下さい。先ほどの例は次のように括弧を使うことで先に数値の加算を行うことができます。

System.out.println("$" + (100 + 80));

この場合、まず「$」と100と80の加算した結果の文字列連結が行われます。最終的に「$180」が画面に出力されることになります。

サンプル

では簡単なサンプルで試してみます。

JSample14_1.java

class JSample14_1{
  public static void main(String args[]){
    System.out.println(200 + 9);
    System.out.println("200" + 9);
    System.out.println(200 + "9");
    System.out.println("200" + "9");

    System.out.println(100 + 80 + "$");
    System.out.println("$" + 100 + 80);
    System.out.println("$" + (100 + 80));
  }
}

コンパイル後に実行すると次のように表示されます。

p14-1

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)