当前位置: 首页 > 面试题库 >

我们可以依靠String.isEmpty来检查Java中String的空条件吗?

酆乐湛
2023-03-14
问题内容

我正在传递一个accountid作为XML文件的输入,如图所示,稍后将对其进行解析并将在我们的代码中使用:

<accountid>123456</accountid>
<user>pavan</user>

问题是,如果没有传递任何内容(accoutnid中的空值)作为accountid传递,我将无法在Java代码中处理这种情况。我尝试了这个,但是没有成功:

if (acct != null||acct==""||acct.equals("")) 
{
    // the above is not working 
}

我可以使用以下方法成功解决此问题:

if(!acct.isEmpty())
{
   // thisis working 
}

我们可以依靠该String.isEmpty()方法来检查a的空条件String吗?这有效吗?


问题答案:

不,绝对不是-因为如果acct为null,它甚至 不会 到达isEmpty…它将立即抛出NullPointerException

您的测试应为:

if (acct != null && !acct.isEmpty())

注意&&这里的用法,而不是||前面的代码中的; 还要注意如何在你前面的代码,你的情况是错误的呢-即使&&你只输入了if,如果身体acct
一个空字符串。

或者,使用番石榴:

if (!Strings.isNullOrEmpty(acct))


 类似资料:
  • 我们正在构建一个应用程序,我们需要在数据库中存储加密的数据,而不是使用MySql、AES_ENCRYPT和AES_DECRYPT,我们正在使用Laravel内置的加密和解密函数。 这将是未来的证据,因为我们不想为未来的更新松散数据。

  • 问题内容: 如果我在多线程环境中有一个未同步的Java集合,并且不想强制该集合的读者进行同步[1],那么我可以同步编写器并使用引用分配的原子性的解决方案是否可行?就像是: 在这种情况下,推出自己的解决方案似乎常常会失败,因此我会对了解其他可用来防止对象创建和阻止数据使用者的模式,集合或库感兴趣。 [1]原因是与写入相比,读取所花费的时间比例更大,并且存在引入死锁的风险。 编辑:在一些答案和评论中有

  • 这是另一个问题的后续问题 我试图在编译时确定特定实现是否在结构中添加了未命名的填充。像gcc这样的特定实现允许使用编译指示来控制结构中的填充和对齐,但代价是与其他实现兼容。由于 的 n1570 草案同时需要,因此我想使用它们来查看实现是否在成员之间使用了填充。 以下是代码的相关部分(参考问题中的完整代码): 正如6.7.2.1结构和联合说明符15所说: 在结构对象中,非位字段成员和位字段所在的单位

  • 问题内容: 有没有办法在我们自己的程序中访问String常量池的内容? 说我有一些基本的代码可以做到这一点: 现在,我们的字符串常量池中有2个字符串在浮动。有什么方法可以访问池并打印出上述值或获取池中当前包含的当前元素总数? 即 问题答案: 您不能直接访问。 根据Javadocs 是: 最初为空的字符串池由String类 私有 维护。 但是,可以使用String的方法将String对象添加到此池中

  • 我需要编写一个以两个字符串作为输入的函数。一个是我要写的信息,第二个是给我的信。字母的顺序是随机的。不能保证每个字母出现的次数是相似的。有些字母可能会完全丢失。函数应该确定我是否可以用给定的字母写消息,并且它应该相应地返回true或false。 我编码了它,我认为它是非常快的,但我如何改进它,记住,带字母的字符串将是非常大的,而消息将是非常短的? 有最快的方法吗? 对于大碗大小和较小的味精大小,我

  • 例如,我想创建注释@Out to target参数。然后,我会以某种方式使用编译器来检查参数值是否在函数返回之前设置好。这可能吗? 还考虑了一个@Immutable注释,它不允许调用任何未用@Const注释的方法,也不允许访问任何公共字段。(编译时,可能是运行时?) 到目前为止,我有: 这是另一个注释。同样,我对它没有完整的定义: 我想我可以开始设计一个策略来在运行时使用反射来实现它,但是我想指示