Java 比较的区别是什么?

Java 比较的区别是什么?,java,comparison,Java,Comparison,可能重复: 我只是想知道他们之间有什么区别 if (null == something) {...} 及 假设在这两种情况下,某物是同一个对象。大概,除了代码的可读性之外,应该没有任何限制。这些语句完全等效 只有在使用equals时才会出现差异,而null永远不会被明确使用 if( "A".equals(someString) ) { ... } 是空安全的,因为如果someString为空,它不会失败 if( someString.equals("A") ) { ... } 当some

可能重复:

我只是想知道他们之间有什么区别

if (null == something) {...}


假设在这两种情况下,某物是同一个对象。大概,除了代码的可读性之外,应该没有任何限制。

这些语句完全等效

只有在使用equals时才会出现差异,而null永远不会被明确使用

if( "A".equals(someString) ) { ... }
是空安全的,因为如果someString为空,它不会失败

if( someString.equals("A") ) { ... }

当someString为null时,显然会失败。

这些语句完全等效

if( someString.equals("A") ) { ... }
只有在使用equals时才会出现差异,而null永远不会被明确使用

if( "A".equals(someString) ) { ... }
是空安全的,因为如果someString为空,它不会失败

if( someString.equals("A") ) { ... }

当someString为空时,将明显失败。

请检查此StackOverflow问题:。它涵盖了您问题的答案。

查看此问题:。它涵盖了你问题的答案。

没有区别

if( someString.equals("A") ) { ... }
这只是为了防止使用=代替==的常见错误

给出一个错误,但是

if (something = true) {...}

不,假设某个东西是布尔变量。

没有区别

这只是为了防止使用=代替==的常见错误

给出一个错误,但是

if (something = true) {...}

不,假设某个东西是布尔变量。

没有区别

将常数放在第一位的想法有助于防止在条件中意外赋值。例如,在某些语言中,可以说:

if (i = 42) {
    ...
}
i被赋值,条件为真。如果您不是有意这样做的,那么就不会有编译器错误,而且很难找到

如果您总是将常数放在第一位:

if (42 == i) {
    ...
}
然后在你不小心做的那一天:

if (42 = i) {
    ...
}

编译器错误将立即提醒您,您正在尝试分配常数。

没有区别

将常数放在第一位的想法有助于防止在条件中意外赋值。例如,在某些语言中,可以说:

if (i = 42) {
    ...
}
i被赋值,条件为真。如果您不是有意这样做的,那么就不会有编译器错误,而且很难找到

如果您总是将常数放在第一位:

if (42 == i) {
    ...
}
然后在你不小心做的那一天:

if (42 = i) {
    ...
}


编译器错误会立即提醒您,您正在尝试分配常数。

无差异。考虑行为和性能,此问题再次表明,问题越简单,噪音越大。前4个答案中有2个错误的答案,因为每个人都急于尝试。看,我也有一个类似的问题@John,那不是Yoda语法。Yoda语法为constant.equalsvariable。For==没关系。没有区别。考虑行为和性能这个问题再次表明,问题越简单,噪音越大。前4个答案中有2个错误的答案,因为每个人都急于尝试。看,我也有一个类似的问题@John,那不是Yoda语法。Yoda语法为constant.equalsvariable。For==没关系,-1秒也会给出一个错误。同样,这是Java而不是C。@Daniel:如果某个东西是布尔值,那么它就不是了,如果你给它赋值为true的话。你的否决票是错误的。@JeremyP:我最初的答案是错误的:if something=null:@codaddict:好的,但是现在否决票仍然是错误的。stackoverflow中的Bug?我刚刚尝试取消投票,但我的投票现在被锁定,因为答案没有被编辑,这似乎是错误的。-1第二个答案也会给出一个错误。同样,这是Java而不是C。@Daniel:如果某个东西是布尔值,那么它就不是了,如果你给它赋值为true的话。你的否决票是错误的。@JeremyP:我最初的答案是错误的:if something=null:@codaddict:好的,但是现在否决票仍然是错误的。stackoverflow中的Bug?我刚刚尝试取消投票,但我的投票现在被锁定,因为答案没有被编辑,这似乎是错误的。如果被分配的变量类型是booleanNoted-Edit,也可以在Java if语句的条件下进行赋值。谢谢很好地回答了它的来源,如果所分配的变量类型是boolean-edited的,那么也可以在Java if语句的条件下进行赋值。谢谢很好地回答了它的来源,这个问题不是关于相等方法。是的,但是提问者有一个模糊的想法,改变比较的操作数会导致差异,所以我指出,他可能在哪里见过这个概念,以及它在哪里适用。这个问题不是关于相等方法。是的,但是提问者头脑中有一个模糊的想法,即改变比较的操作数会导致差异,所以我指出,他可能在哪里看到了这个概念,以及它在哪里可以应用。伟大的链接,解释了它从哪里来。伟大的链接,解释了它从哪里来。