Posted at

(初心者メモ)Javaでの足し算で予想外な挙動とその対策

More than 5 years have passed since last update.


プログラミング初歩見習いのJavaメモ / Javaの予期せぬ計算結果・・・!


結論:



  • Javaでは、文字列ではないほうを文字列にした上で、文字列同士の計算を行う。

  • 同じ優先順位の演算子は必ず左から順番に計算される


どういうことかを説明するために、例を。

↓のコードをJavaで書いてコンパイル&実行して下さい。


Test.java

public class Test {

public static void main(String[] args) {
System.out.println("加算の結果は" + 3 + 2 + "です。");
}
}


これを実行すると・・・


実行結果: "加算の結果は32です。"


...!!!???


ここから解説。

Javaでは、すべて左から計算されるということを覚えておきましょう。

まず、



"加算の結果は" + 3 + 2 + "です。"

↑まず 加算の結果は" + 3 の部分から計算され、

"加算の結果は3"に。

そして "加算の結果は3" + 2 + "です。"の黒字部分が計算され、



"加算の結果は32" + "です。" に。

最後は普通に文字列同士の加算をし、



"加算の結果は32です。"

になります。


解決方法

解決方法としては、加算の優先順位を先に数値同士の計算に持ってくるという方法があります。

先程の例ですと、

System.out.println("加算の結果は" + 3 + 2 + "です。");

という計算式の中の数値同士の加算、3 + 2の部分を()で囲ってあげます。



System.out.println("加算の結果は" + (3 + 2) + "です。");

こうすることで、結果は

"加算の結果は5です。"

となり、数値の計算を通常通り行う事ができます。


最後に

加算の時は特に、文字列と数値型が混合してしまうことで予期せぬバグができてしまう可能性がありますので、注意しましょう!