在Java中验证字符串

时间:2012-10-11 11:13:58

标签: java

  

可能重复:
  Checking for null - what order?

任何人都可以告诉我验证'null'字符串值的更好方法是什么?为什么?

String user = userService.getUserName(accID);

1) if(user != null) {
    ..
   }

2) if(null != user) {
    ..
   }

7 个答案:

答案 0 :(得分:2)

没有区别。第一个版本更常用。

答案 1 :(得分:2)

对于这种情况并不重要,只要第一种方法更常见。

然而,当将其直接喂入等于方法时,首选所谓的尤达条件。

例如:

if("".equals(string)){
}

优先

if(string.equals("")){
}

因为它避免了nullpointer异常

答案 2 :(得分:0)

第一种方法主要由开发人员使用。我不认为这有所不同。

答案 3 :(得分:0)

我见过这两种方法。有些人认为最好先给出你比较的价值。如果您有许多替代方案可以看到您首先要比较的价值,这可能会更好。

我个人使用第一种选择,因为这是我的习惯。

如果这是你的问题,我怀疑是否有任何性能差异。所有不同之处在于代码风格和可读性。

答案 4 :(得分:0)

由于它没有功能差异而且第一个更具可读性,所以你应该选择第一个。

答案 5 :(得分:0)

在这种情况下,这是一个品味问题。

在其他情况下,例如如果你要比较字符串文字/常量,我更喜欢这个:

if ("yourStringConstant".equals(yourVariable))

因为这也会处理yourVariable为null的情况。如果您以其他方式执行此操作,则会出现NullPointerException:

if (yourVariable.equals("yourStringConstant"))

答案 6 :(得分:0)

第二种方法来自C / C ++。当你在C中写if (user = null)而不是if (user == null)时,你会得到一个逻辑错误,但不是一个编译错误,这样的错误可能真的很难被发现。

但是如果您编写if(null = user)而不是if(null == user),您将收到编译错误,因为您无法将变量分配给null。这就是为什么经常在那里使用反转的参数顺序的原因。

然而在Java中,这没有多大意义,因为Java编译器不会采用if(user = null)表达式,因此您可以使用任何方法。第一个更广泛但