在java中使用“+ =”而不是“=”的目的是什么?

时间:2015-07-13 15:11:20

标签: java

所以我在处理现有代码库时遇到了这段代码。我的问题是为什么这里没有使用赋值运算符。

  int getSum(int mVar) {
      int sum = 0;
      sum += ((mVar != null) ? mVar : 0);
      return sum;
    }

似乎一个赋值运算符就足够了:

int getSum(int mVar) {
      int sum = ((mVar != null) ? mVar : 0);
      return sum;
    }

将值初始化为零有什么好处吗?

2 个答案:

答案 0 :(得分:4)

int getSum(int mVar) {
    int sum = 0;
    sum += ((mVar != null) ? mVar : 0);
    return sum;
}

相同
int getSum(int mVar) {
    int sum = 0;
    if( mVar != null ) {
        sum = sum + mVar;
    } else {
        sum = sum + 0;
    }
    return sum;
}

它只是简写的代码。 :)

正如提到的许多评论一样,a += ba = a + b相同。这是一个非常好的技巧。这同样适用于a -= ba *= ba /= b

如果你很好奇,(mVar != null) ? mVar : 0;是一个三元运算符。它类似condition ? value if true : value if false;,通常用于作业。

但有些注意事项。 int是原始数据类型,永远不能为空,因此上面的代码只是为了解释语法。

答案 1 :(得分:0)

要回答您的问题,在此示例中使用“+ =”没有意义,常规赋值运算符更好

 int getSum(int mVar) {
      int sum = 0;
      sum += ((mVar != null) ? mVar : 0);
      return sum;
 }

此代码是“+ =”的错误示例,因为此处不应使用此代码。相反它应该是:

   int getSum(Integer mVar) {
          return mVar != null? mvar : 0;
   }

您没有看到“+ =”的好处,因为sum已经是0。所以,你看看它,你想知道为什么你会做sum = 0 + mVar;(这与sum += mVar sum = mVar; int getSum(int mVar) { int sum = 5; sum += ((mVar != null) ? mVar : 10); return sum; } 时的sum = sum + mVar;相同

一个更好的例子是(ofc这些值可能没有意义,但它使“+ =”有价值):

input {
    color: white;
}
input[type=text]:-moz-placeholder {
    color: gray;
}
input[type=text]::-moz-placeholder {
    color: gray;
}
input[type=text]:-ms-input-placeholder {
    color: gray;
}
input[type=text]::-webkit-input-placeholder {
    color: gray;
}

这样一来,如果你不使用“+ =”,就会被迫说A first chance exception of type 'System.Net.WebException' occurred in System.dll System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel. at System.Net.HttpWebRequest.GetResponse() ,否则就不正确了。