Sirop4ik Asked:2020-11-23 17:22:32 +0000 UTC2020-11-23 17:22:32 +0000 UTC 2020-11-23 17:22:32 +0000 UTC 比较相等时的元素顺序 772 你可以这样写条件: if (repository == null) {} 你可以这样做: if (null == repository) {} 有什么区别? java 4 个回答 Voted Best Answer Nick Volynkin 2020-11-23T17:41:52Z2020-11-23T17:41:52Z 这种技术称为尤达条件。第一个常量被设置,如果你犯了错误并使用=而不是==你,编译器为了向你指出这个错误。在 Java 中,这是无关紧要的,因为 几乎总是会出现错误,例外情况在相邻的答案中有描述。 在另一种情况下,比较顺序在 Java 中很重要—— .equals(). 假设您有一个从方法外部获得的对象和一个要比较的样本。 if (foo.equals(sample)) {...} 如果以这样的方式进行比较,则可能会发生结果对象相等null,然后将抛出异常。它也可以是一个棘手的对象,其中它被.equals()重新定义为始终返回true。 以相反的顺序比较更可靠: if (sample.equals(foo)) {...} free_ze 2020-11-23T17:23:55Z2020-11-23T17:23:55Z 一些上瘾者向后写,以便编译器在他们写“=”而不是“==”时提醒他们。但是在Java中,强类型是不强制转换的,有错误null的boolean代码无论如何都不会编译,所以没有区别。在其他语言中,是的。 不是Java,null您可以考虑使用任何其他常量: if (null = repository) { //compile error ... } if (repository = null) { // build success ... } 在 Java 中,一种特殊情况会起作用: if (condition = true) { ... } Ksenia 2020-12-01T18:48:31Z2020-12-01T18:48:31Z 原则上前面的回答都已经说了,我再补充一下。在Java中,Yoda 的术语 with==只有在比较时才有用boolean,在两种情况下。 1.如果你有一个返回的方法boolean: public static boolean getBool() { return true; } 然后将此方法的结果与变量进行比较boolean: boolean bln = false; if (bln == getBool()) { //блок if } else { //блок else } 在这种情况下,必须执行 else 块。但是如果你突然犯了一个错误并写: if (bln = getBool()) { //блок if } else { //блок else } 编译器不会抛出错误,代码会被执行,但是 if 块会被执行。为了避免这样的错误,最好写成 if (getBool() == bln) { //блок if } else { //блок else } 因为getBool() = bln编译器不会让你不小心写的。 2.如果比较对象Booleanc null: Boolean booleanObject = null; if (booleanObject == null) { ... } 如果在这种情况下你==不小心写了=: if (booleanObject = null) { ... } 代码将运行,但你会得到NullPointerException. 和写 if (null = booleanObject) { ... } 同样,编译器不会给你。 PS 此外,在将字符串与equals. 例如,如果你写 if (strVar.equals("string")) { //блок if } else { //блок else } 如果strVar它等于,则会出现错误null,但如果你写 if ("string".equals(strVar)) { //блок if } else { //блок else } 将在相同的情况下命中块else(如果strVar它等于null)。 WildTigerrr 2020-11-28T20:03:34Z2020-11-28T20:03:34Z 区别在于比较的顺序=) Java没有太大区别,它会这样那样工作,只有当你将null与一行中的所有内容进行比较时,然后解析你代码的程序员才会发誓是什么样的他写的印度教,因为 不要忘记代码约定。
这种技术称为尤达条件。第一个常量被设置,如果你犯了错误并使用
=而不是==你,编译器为了向你指出这个错误。在 Java 中,这是无关紧要的,因为 几乎总是会出现错误,例外情况在相邻的答案中有描述。在另一种情况下,比较顺序在 Java 中很重要——
.equals(). 假设您有一个从方法外部获得的对象和一个要比较的样本。如果以这样的方式进行比较,则可能会发生结果对象相等
null,然后将抛出异常。它也可以是一个棘手的对象,其中它被.equals()重新定义为始终返回true。以相反的顺序比较更可靠:
一些上瘾者向后写,以便编译器在他们写“=”而不是“==”时提醒他们。但是在Java中,强类型是不强制转换的,有错误
null的boolean代码无论如何都不会编译,所以没有区别。在其他语言中,是的。不是Java,
null您可以考虑使用任何其他常量:在 Java 中,一种特殊情况会起作用:
原则上前面的回答都已经说了,我再补充一下。在Java中,Yoda 的术语 with
==只有在比较时才有用boolean,在两种情况下。1.如果你有一个返回的方法
boolean:然后将此方法的结果与变量进行比较
boolean:在这种情况下,必须执行 else 块。但是如果你突然犯了一个错误并写:
编译器不会抛出错误,代码会被执行,但是 if 块会被执行。为了避免这样的错误,最好写成
因为
getBool() = bln编译器不会让你不小心写的。2.如果比较对象
Booleancnull:如果在这种情况下你
==不小心写了=:代码将运行,但你会得到
NullPointerException. 和写同样,编译器不会给你。
PS 此外,在将字符串与
equals. 例如,如果你写如果
strVar它等于,则会出现错误null,但如果你写将在相同的情况下命中块
else(如果strVar它等于null)。区别在于比较的顺序=)
Java没有太大区别,它会这样那样工作,只有当你将null与一行中的所有内容进行比较时,然后解析你代码的程序员才会发誓是什么样的他写的印度教,因为 不要忘记代码约定。