class OperatorTest01A { public static void main(String[] args){ int a = 8; int b = 2; System.out.println("a + b = " + a + b ); }}のコンパイル結果が82です。なぜですか!?教えて下さい!
class OperatorTest01A { public static void main(String[] args){ int a = 8; int b = 2; System.out.println("a + b = " + a + b );
}
}
のコンパイル結果が82です。
なぜですか!?
教えて下さい!
a+bの部分を()でくくってみては?
ありがとうございます!
理由の説明は無いようでしたので,説明を.Javaでは,+は足し算の意味だけではなく,文字列同士をつなげる,という意味があります.また,文字列が必要な部分では,自動的にtoString()メソッドを呼び出して,文字列に変換する,という機能もあります."a + b" + a + bは,まず"a + b = " + aが処理されます.ここで,前に文字列が来ているので,これは文字列の連結だ,と解釈され,a.toString()で文字の8に変換され,"a + b = 8"になります.bについても同様です.(a + b)とすると,先にa + bが処理され,こちらは整数同士なので,整数の足し算として処理され,その後文字列の連結として処理されるので正しく表示されるわけです.このあたりは,演算子の優先度,などを調べておくと良いでしょう.
そうだったんですか。詳しい説明ありがとうございました。
a+bの部分を()でくくってみては?
返信削除ありがとうございます!
返信削除理由の説明は無いようでしたので,説明を.Javaでは,+は足し算の意味だけではなく,文字列同士をつなげる,という意味があります.また,文字列が必要な部分では,自動的にtoString()メソッドを呼び出して,文字列に変換する,という機能もあります."a + b" + a + bは,まず"a + b = " + aが処理されます.ここで,前に文字列が来ているので,これは文字列の連結だ,と解釈され,a.toString()で文字の8に変換され,"a + b = 8"になります.bについても同様です.(a + b)とすると,先にa + bが処理され,こちらは整数同士なので,整数の足し算として処理され,その後文字列の連結として処理されるので正しく表示されるわけです.このあたりは,演算子の優先度,などを調べておくと良いでしょう.
返信削除そうだったんですか。詳しい説明ありがとうございました。
返信削除