public class Container {
private int value;
public Container(int value){
this.value=value;
}
public int getValue(){
return this.value;
}
public int sum(Container c){
return this.value+c.getValue();
}
public void main(){
Container c1=new Container(1);
Container c2=new Container(2);
System.out.println("sum: " + c1.getValue()+c2.getValue());
System.out.println("sum: " + c1.sum(c2));
}
}
运行此代码时,我得到以下结果:
sum: 12
sum: 3
预期是:
sum: 3
sum: 3
有人知道为什么我得到这些结果吗?
答案 0 :(得分:9)
将+
运算符与String
一起使用时,它将其视为串联,而不是加法,并且Java从左到右评估操作,因此"sum: " + c1.getValue()+c2.getValue()
被评估为>
"sum: " + 1 + 2
"sum: 1" + 2
"sum: 12"
如果您希望整数加法运算首先发生,则需要添加括号:
System.out.println("sum: " + (c1.getValue() + c2.getValue()));