将字符串设置为“”或将其保留为空?
我有一些字符串变量获取调用函数getParameter()
的值,其中一些变量可能是null
。将字符串设置为“”或将其保留为空?
后来我会用equals()
方法评估这个变量。 我是否应该将所有字符串变量设置为空字符串(""
),如果它们是null
以避免任何问题?
你有三个选项 - 如果你正在比较的项目也被认为不是null(例如一个常量),那么首先使用它。
if ("hello".equals(variable)) { ... }
检查空第一
if (variable != null && variable.equals("hello")) { ... }
最后,如果空和空字符串,可以考虑再同下游字符串设置为空字符串。但是如果你希望以不同的方式处理null,那么你不能这样做。
我更喜欢** if(“hello”.equals(variable))** – 2009-10-07 12:38:22
第一个选项的语法是“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)) { ... }
你是在谈论字符串文字“空”(即4个字符)还是你在谈论价值'空'? – 2009-10-07 12:23:18
我在说价值null – 2009-10-07 12:25:26