質問: 2`です。 `String.valueOf()` で `String` 型に変更して `a + b` を12と表示させたいです。 しかし、以下のように試したコードではうまくいきませんでした。 * `return String.valueOf(a + b)` → 4となってしまう。 * `return String.valueOf("a "+ "b")` → abとなってしまう。 どうしたら12を表示させられるか教えていただきたいです。
回答: `String.valueOf()` は利用していませんが、`int`型を連結するのであれば次も利用可能です: ``` int a = 1; int b = 2; String str = "" + a + b; System.out.println(str); ``` 参考: * How to concatenate int values in java? - Stack Overflow 仕様は次のリンクの通りになります。 * 15.18.1. String Concatenation Operator + 簡単に言うと、 `x + y` の `x`か`y`の一方が`String`の場合、`+`は特別な挙動となり、他方を文字列変換した上で、両者文字列の連結になります。 `a + b` だと単に `int` 同士の計算ですが、最初に `"" + a` とすることで`String`と`int`の計算、つまり上記の仕様にある条件に当てはまるようになります。 ですので、空文字列と`a`を文字列化したものの連結、つまり `a`を文字列化したものが得られます。 更に `上で計算した結果 + b`の計算を行うわけですが、これも`String`と`int`の計算になります。 そういうわけで、最終的に得られるのは`aを文字列化したもの`と`bを文字列化したもの`を連結した文字列になります。