!(a==b) 和 a!=b 的区别

gra*_*ron 7 java comparison if-statement equality

上周在高中时,我的 IT 老师给了我们一个程序,她写的一个部分让我很感兴趣。在 if 语句中,她检查数组的元素是否不为空,因此程序可以继续处理该元素,因此她写道: if (!(array[i] == null),这让我感到困惑,因为使用这种方法您只是更多地使用括号,这使得它不太容易阅读。我把它改成了ìf (array[i] != null),它工作得很好。但现在我很困惑,因为作为一名老师,我假设你对你的学科了解很多,那么她为什么用她的方法而不是我的方法有充分的理由吗?有什么我不知道的细节吗?

And*_*ner 16

这两个表达式的语义没有区别。我会说没有充分的理由去写前者。

但现在我很困惑,因为作为一名老师,我假设你对你的学科了解很多,那么她为什么用她的方法而不是我的方法有充分的理由吗?

最好的办法是问你的老师。关于教师——作为人类——要记住的最重要的事情是他们有经验、有偏见并且容易犯错。

换句话说,她可能被过去的一些问题所困扰,通过这样写就解决了——问她这件事,你可能会学到一些东西。

或者,她可能认为这更好,并且无法表达个人偏好的强烈利益;或者那是她学习的方式,并且没有看到强烈需要改变 - 你从中学到了一些东西,只要有不止一种方式来表达相同的语义。

(我有强烈的偏好,!=因为它更整洁——括号更少;!=如果你不打算使用它,为什么语言设计者会费心提供——但这些是个人的偏好)。

或者,她可能打算使用!=,而忘记回去修复它。很容易忘记清理东西。

  • 很好的答案。我想补充一点,老师倾向于让例子更清楚。我认为在教授布尔代数时,向某些学生解释 != 条件为 !(==) 更容易,也许这就是编写后者的原因 (2认同)