null、0和nothing之间有什么区别?

12

null0nothing之间有什么区别?

我找不到一个回答这三个问题的问题。

例如:

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

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

如果我询问一个 string != "" 或者一个 is not nothing,我会困惑该在何时以及为什么使用哪一个。

当验证数据时,我不确定该使用哪一个。

8个回答

16

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

0是一个数值数据类型,其值为0。

Nothing实际上并不存在,然而我认为您可能将其视为一个空字符串 "",这只是一个不包含值的String数据类型。

如果您从Javascript范式来看,可能会感到困惑。在Java中,变量不是真值和假值,因此类型在比较中被考虑。


@Skippy 很高兴我能帮到你。 - Kevin Bowersox
1
在Java中,void只是表示一个方法不返回对象或原始类型。 - Kevin Bowersox
NULL和null相等吗? - koding

9

0是一个数字,您可以使用它来检查数字值(int、short、float、double等)是否为数字0。

null是指向无处的引用的值,您可以使用它确保引用确实引用了某些内容。

nothing不是Java的一部分。

对于没有任何信息的情况,最接近nothing的东西是方法的void声明。它表示该方法确实不返回任何内容。

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

例如,0是“5减去5的答案”(以及其他问题)。

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

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


是的,它声明了一个方法(只有方法可以是void)不会返回任何东西。但你不能检查某个值是否为空,因此它与0和null处于不同的类别,它们是值。 - Ingo
1
更新了我的答案,包括 void - Ingo

7
在Java中没有"nothing"这个概念。存在一个null引用,表示变量不指向任何对象,因此它是一种"nothing",但与Javascript中的undefined概念不同。
另外,请注意使用equals进行String比较,而不是!===,应该使用string.equals(otherString)
当作为实例变量声明时,int类型默认值为0

@Skippy 在 JavaScript 中,undefinednull 一样都是一种“无”或“空”的值,它是一个哨兵值。而在 Java 中,void 表示的是“无”,没有任何值可以满足它。 - user2864740
“0值是int声明时默认的值。” - Ingo
@Ingo 为什么不行?int x; 如果你打印它,x的值是多少? - Dan D.
在一个方法中?试试吧,丹。 - Ingo
我没有提到任何方法,但我添加了一些内容以确保它不被解释。 - Dan D.
你说过 "在声明时"。在一个方法中,int x; 是一个 int 的声明,不是吗? - Ingo

5

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

Java中没有叫做"Nothing"的东西。

"0"表示字符串对象存在且其值为"0"。

""表示一个空字符串,即字符串对象存在且其值为空。


5
  • "nothing"在Java中意味着什么都没有。

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

  • "Null"是指任何对象引用指向内存中不存在的位置,则称为“Null”引用。


3

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

如果您不想使用StringUtils,则首先可以检查sc.nextList()是否为null(!= null),如果不为null,则可以检查其是否与""不同(!= "")。


2

空变量未被分配任何值。变量的内存空间为空或包含垃圾值。 而当一个变量为0时,该变量保持值为“0”。内存空间中存储了值“0”。

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


2

例如:

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

1
int 不能为 NULL!绝对不要!NULL 是一个对象值,它引用了该对象没有内存分配!(此帖子标记为 Java) - BananaBuisness
1
空字符串并不代表没有任何值。它是一个完全有效的字符串值,其在自然数领域中扮演着与0非常相似的角色。例如,对于某些运算(均命名为+),""和0都是中性元素。 - Ingo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接