【问题标题】:What is the difference between null, 0 and nothing?null、0 和 nothing 有什么区别?
【发布时间】:2018-12-18 18:18:17
【问题描述】:

null、0 和 nothing 有什么区别?

我找不到解决所有这三个问题的问题。

例如:

如果我从 string 获取输入并将其解析为 int。

return Integer.parseInt(sc.nextLine());

或者,如果我问的是string != "" 还是is not nothing,我对何时以及为什么使用哪个感到困惑。

我对在验证数据时使用哪一个感到困惑。

【问题讨论】:

    标签: java null zero


    【解决方案1】:

    null 表示变量包含对内存中不包含对象的空间的引用。

    0 是数值数据类型,值为 0。

    Nothing 并不真正存在,但我认为您可能会将其视为一个空字符串 "",它只是一个不包含值的 String 数据类型。

    如果您从Javascript 范式来看这可能会令人困惑。在 Java 中,变量不是真假,因此在比较时会考虑类型。

    【讨论】:

    • @Skippy 很高兴我能帮上忙。
    • 在 Java 中 void 只是表示方法不返回对象或原语。
    • 是 null 等于 NULL 吗?
    【解决方案2】:

    0是一个数字,你用它来检查一个数值(int、short、float、double等)是否是数字0。

    null 是不指向任何地方的引用的值,您可以使用它来确保引用确实引用了某些东西。

    nothing 不是 Java 的一部分。

    最接近无用的东西(因为:根本没有信息)是方法的void 声明。它声明该方法实际上没有返回任何内容。

    请注意,0、null 和空字符串 "" 是值,因此包含信息。

    例如,0 是“5 减去 5 是多少?”的答案。 (等等)。

    null 是对“这东西指向一个对象吗?”的否定回答。

    ""”可能是“你名字中最长的 'X 序列是什么?”的答案,除非你的名字是“Xanthippe”。

    【讨论】:

    • 是的,它声明一个方法(并且只有方法可以是无效的)不会返回任何东西。但是您无法检查某个值是否为 void,因此它与 0 和 null 属于不同的类别,它们是值。
    • 更新了我的答案以包括void。
    【解决方案3】:

    Java 中没有“无”。有一个null 引用,意思是一个变量没有引用任何对象,所以它是一种虚无,但没有像Javascript 中的undefined 的概念。

    另外,请注意String 的比较应该使用equals,而不是!= 或==,所以string.equals(otherString)。

    0 值是 int 在声明为实例变量时获得的默认值。

    【讨论】:

    • @Skippy undefined(在 JS 中)与 null 一样多是某物(或“无”)。这是一个哨兵值。现在,Java 中的void 什么都不代表......而且它们没有可以满足它的价值。
    • "0 值是 int 在声明时获得的默认值。"不不不!
    • @Ingo 为什么不呢?诠释 x;如果你打印它,x 的值是多少?
    • 在方法中?试试吧,丹。
    • 我没有说任何关于方法的内容,但我添加了一些内容以确保它不会被解释。
    【解决方案4】:

    "Null"在Java中,对象引用没有指向任何对象,它是空的。

    "Nothing",Java 没有什么叫“Nothing”

    "0" 表示.字符串对象存在,值为“0”

    "" 表示空字符串,即字符串对象存在,值为“”

    【讨论】:

      【解决方案5】:
      • “nothing”在 Java 中表示什么都没有。

      • 0 表示大于 -1 且小于 1 的整数值。

      • “Null”表示如果任何 Object Reference 没有指向内存中的任何位置,则称为“Null”引用。

      【讨论】:

        【解决方案6】:

        在 Java 中检查字符串对象的最佳方法是使用 org.apache.commons.lang.StringUtils。

        如果您不想使用StringUtils,您可能需要首先检查sc.nextList() 是否为空(!= null),如果它不为空,那么您可以检查它与“”是否不同(!= "")。

        【讨论】:

          【解决方案7】:

          空变量未分配任何值。 (变量的)内存空间为空或保存垃圾值。 当变量为 0 时,该变量保存值“0”。内存空间中存储了值“0”。

          NULL 基本上意味着没有值,或者未知,NULL 值可以是空的、无意义的,甚至没有初始化。例如,当我们说员工奖金为空时,这意味着该人没有获得任何奖金或没有资格获得奖金。现在如果值为 0,则表示员工获得奖金但当前奖金为零。

          【讨论】:

            【解决方案8】:

            例如:

            int s;      //s=null
            int s = 0 ;  //s=0
            String s="";// s=nothing
            

            【讨论】:

            • int 不能为 NULL!!!永远永远永远! NULL 是一个对象值,它引用该对象没有内存分配! (这篇文章用java标记)
            • 空字符串不是空的。它是一个完美的有效字符串值,在自然数领域中的作用与 0 非常相似。例如,“”和 0 都是某些操作的中性元素(都命名为 +)。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-06-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-01-09
            • 2011-02-14
            相关资源
            最近更新 更多