如果两者都被评估,那么比较文字的顺序是否重要?

时间:2015-06-01 08:19:50

标签: java if-statement comparison

我有一个相当愚蠢的问题。关键是,我经常看到struct element : std::pair<std::array<int,3>,int> { element(int i, int j, int k, int q) { first={i,j,k}; second=q; } }; vector<element> foo; foo.emplace_back(i,j,k,q); 语句如下:

if

订单对我来说很奇怪。我甚至认为这会降低代码的可读性。

private int smth; // ... if (3 == smth) // ... 语句中以某种顺序将文字与二元运算符相互比较,是否有任何好处?

2 个答案:

答案 0 :(得分:2)

不,唯一的区别在于使用equals比较对象。

if(obj != null && obj.equals("foobar"))if("foobar".equals(obj))

通过使用反转方式,您可以避免空检查。自1.7起,您可以改为使用Objects.equals(obj, "foobar");

答案 1 :(得分:2)

  

在if语句中以特定顺序将二元运算符相互比较的文字放在一起会有什么好处吗?

不是Java,除非你用布尔值来做:

if (false == flag)

一个案例中,它可以帮助您避免这种错误:

if (flag = false)

...编译器不会保护您(将false分配给flag并且永远不会评估为真)。

在所有其他情况下(任何不是boolean的东西),Java编译器都不会让你犯这个错误。当然,在测试布尔值时,最好只测试布尔值:

if (!flag)

if (flag)

取决于您要查找的值。