空比较

kak*_*ppa 2 java

我今天看到了这段代码,想知道它们之间有什么区别

return (null==employeeName ? "": employeeName);
Run Code Online (Sandbox Code Playgroud)

return (employeeName == null ? "": employeeName);
Run Code Online (Sandbox Code Playgroud)

Dav*_*ave 5

不再.

曾经是这样的情况,在C和C++的狂野时代,非布尔表达式在if语句中都没问题,因此没有区别,除非你犯了一个经典的程序员错误而忘记了一个等号:

employee = null
Run Code Online (Sandbox Code Playgroud)

会编译,但是

null = employee 
Run Code Online (Sandbox Code Playgroud)

不会.

这在Java中无关紧要,因为Employee类型不是布尔值,而编译器(而不是语法)阻止您在脚下拍摄自己; 但是那些写作的人可能是他们写作时的习惯.

  • 第一个不会编译,但不是因为它是一个赋值.这是因为赋值表达式的类型不是布尔值.如果它是一个布尔值的赋值,它将编译. (2认同)