【问题标题】:how null is checked in java? [duplicate]java中如何检查null? [复制]
【发布时间】:2015-07-28 00:57:24
【问题描述】:

我正在做一些项目,当我必须从列表中检查对象是否为空并且对象的所有变量都为空时,我得到了一个条件。

所以有人可以向我解释如何检查对象是否为空,即变量明智或其他方式。

如何在 java 内部检查对象是否为 null 不需要代码。想要这个概念

请详细一点。

我的问题:Java 如何在内部检查对象是否包含空值?

【问题讨论】:

  • 这是一个谷歌问题,而不是真正的编程问题。
  • 不不,没有什么类似的..我在谷歌上尝试了很多,但在这里找不到任何问题..!!!和我的软件中的 izZ acondition..!!!
  • 那么请在您的问题中更具体一些,因为按照措辞,您似乎在要求一种方法来检查对象是否为空。编辑您的问题。
  • 我一定会做的..但是可以向我解释一下如何检查任何对象的空概念..
  • 这到底是怎么回事?

标签: java


【解决方案1】:

显然,您实际上是在问null 检查是如何在后台实现的。

答案是特定于实现的。对于不同的 JVM 和/或执行平台,它可能会有所不同。 (如果您想研究特定 JVM 上的具体实现,我建议您检查 JVM 源代码和/或让 JIT 编译器转储已编译的本机代码供您检查。)

基本上有两种方法:

  • 一个显式的x == null 测试通常会编译成一个指令序列,该序列将x 的值与代表null 的值进行比较。这通常是 32 位或 64 位零。

  • x.toString() 中的隐式空检查可以以相同的方式完成。或者,可以通过简单地将x 视为机器地址并尝试在该地址获取值来完成。假设零页没有被映射,这将触发硬件“分段错误”异常。 Java 使用本机代码机制来捕获该异常,并将其转换为 NullPointerException

【讨论】:

  • 那么是否可以打印对应的int值null?
  • 在常规 Java 中没有。但你不需要。请参阅我关于如何研究该问题的建议。
  • 一个很好的解释!这个问题对于否决票来说还不错,但没有正确表示。
【解决方案2】:

如果您正在查看单个项目:

if(object == null)
{
   (...)
}

你提到了一个列表。让我们假设它是一个对象的 ArrayList:

for(Object o : array_list)
{
   if(o == null)
   {
      (...)
   }
}

您还想在开始循环之前检查您的列表是否为空。

【讨论】:

  • 你误会了!!我想问一下java如何检查null,即通过检查所有变量是否为null或其他方式?
  • @tushargarg 不清楚你在问什么。你应该澄清更多
  • izZ 只是我想知道如何在 java 内部检查对象是否为 null 不想要代码。想要这个概念。
【解决方案3】:

基本上可以轻松检查任何null 值。 null 的每个内部细节和实现以及与 object 的比较都完全由 java 管理,因此我们需要将 objectnull 进行比较:-

Object obj = null; // Object can be replaced with any class 
if(obj == null){
// do your logics
} 

只要考虑任何ListCollection,看看其中存储的object 是否为null:-

List <String> list = new ArrayList<String>();
list.add("hi");
list.add(null);
for(String s : list){
 if(s == null){
// do your logics here
   }
}

【讨论】:

    【解决方案4】:

    Java 不检查对象是否为 "null"

    您不能拥有null 对象,因为null 没有扩展Object 类。

    您可以在 java 中做的是将一个变量分配给null,这意味着它引用“无”。 (实际上是引用null定义为的字节)

    这就是其他答案正在做的事情,他们正在检查引用变量是否实际上指向任何内容(null)。然而,对象本身永远不会是null

    【讨论】:

    • 这没有帮助。 JLS 说 null 不是对象是正确的。然而,实际上 Java 专业人士乐于使用“检查对象是否为空”这个短语,因为我们都知道这对我们意味着什么。
    • @StephenC 这是真的。但是,我正在阅读一些 OP 的 cmets,其中一些他询问对象是否为 null,如果“所有变量都为 null ...。[以及]如何在内部检查对象是否为 null”我将此解释为想要要知道确切的细节,其中之一是对象本身不为空,并且该变量被引用null,这就是我们检查“对象是否为空”的方式
    • 我把它归结为英语能力差...
    • 很公平。猜猜我们不会知道 OP 到底想要什么。
    • @Marcin 你是对的,我想问同样的问题,非常感谢,但当你回答时我找到了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2014-12-25
    • 2016-09-24
    • 2013-12-25
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多