【问题标题】:Set a String to "" or leave it null?将字符串设置为“”或将其保留为空?
【发布时间】:2009-10-07 12:21:26
【问题描述】:

我有一些字符串变量,它们通过调用函数 getParameter() 获取值,其中一些变量可能是 null。

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

【问题讨论】:

  • 您是在谈论字符串文字 "null"(即 4 个字符)还是在谈论值 null?
  • 我说的是null值
  • null 不是一个值,是缺少一个
  • @:阅读java.sun.com/docs/books/jls/third_edition/html/…:“null 类型有一个值,null 引用,由字面 null [...] 表示”
  • @skaffman null 是参考的有效值

标签: java string null initialization


【解决方案1】:

另一种方法是使用静态 util 方法进行比较。 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)) { ... }

【讨论】:

    【解决方案2】:

    您有三个选择 - 如果您要比较的项目也已知不为空(例如常量),请先使用它。

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

    先检查是否为空

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

    最后如果 null 和空字符串可以认为是相同的下游然后将字符串设置为空字符串。但是,如果您希望以不同的方式处理 null,则不能这样做。

    【讨论】:

    • 我更喜欢 if ("hello".equals(variable))
    • 第一个选项的语法是“icky”,我相信这是技术术语。第二个选项我并不热衷,因为我已经看到太多的程序员甚至像这样简单的布尔操作都塞满了东西。如果可以选择,我会选择 StringUtils...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 2014-02-09
    • 2011-04-14
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多