字符串中的"空变量检查"

Oh *_*oon 1 java string

一般来说,两者之间是否存在差异

if("x".equalsIgnoreCase(myStrVar))
Run Code Online (Sandbox Code Playgroud)

if(myStrVar.equalsIgnoreCase("x"))
Run Code Online (Sandbox Code Playgroud)

因为第一个不会导致空指针异常,但第二个将在两个方案中都myStrVar为空?

Jon*_*eet 7

对,那是正确的.但是,这并不意味着您应该始终使用前者("安全")版本.

如果你绝对相信myStrVal非null - 意味着它为null将表示一个错误 - 我可能会使用第二种形式.

  • 我觉得它更具可读性(就像我写的if (x == 0)那样,而不是if (0 == x)
  • 如果值零,它可能会更好,以尽早去爆炸,而不是继续,而在意外状态

所以:

  • 如果要对myStrValnull进行特殊处理,请先执行检查
  • 如果要以myStrVal与任何其他非"x"值相同的方式处理null,请使用第一个表单
  • 如果您想将myStrValnull视为错误,请使用第二种形式