将字符串设置为“”或将其保留为空?

问题描述:

我有一些字符串变量获取调用函数getParameter()的值,其中一些变量可能是null将字符串设置为“”或将其保留为空?

后来我会用equals()方法评估这个变量。 我是否应该将所有字符串变量设置为空字符串(""),如果它们是null以避免任何问题?

+0

你是在谈论字符串文字“空”(即4个字符)还是你在谈论价值'空'? – 2009-10-07 12:23:18

+0

我在说价值null – 2009-10-07 12:25:26

+2

null不是一个值,它缺少一个 skaffman 2009-10-07 12:26:28

你有三个选项 - 如果你正在比较的项目也被认为不是null(例如一个常量),那么首先使用它。

if ("hello".equals(variable)) { ... } 

检查空第一

if (variable != null && variable.equals("hello")) { ... } 

最后,如果空和空字符串,可以考虑再同下游字符串设置为空字符串。但是如果你希望以不同的方式处理null,那么你不能这样做。

+0

我更喜欢** if(“hello”.equals(variable))** – 2009-10-07 12:38:22

+2

第一个选项的语法是“icky”,我相信这是技术术语。 第二个选项我不喜欢,因为我看过太多的程序员塞满即使简单的布尔操作。 鉴于我选择了StringUtils ... – 2009-10-07 12:54:51

另一种方法是使用静态实用程序方法进行比较。 Apache commons-lang StringUtils.equals(String,String)对于空值可能具有明确定义的行为。

// null safe compare 
if (StringUtils.equals(variable,"hello")) {...} 

// is "" or null 
if (StringUtils.isEmpty(variable)) { ... } 

// with static imports it's a bit nicer 
if (isNotEmpty(var1) && isEmpty(var2)) { ... }