在null
、0
和nothing
之间有什么区别?
我找不到一个回答这三个问题的问题。
例如:
如果我从一个string
获取输入并将其解析为int
。
return Integer.parseInt(sc.nextLine());
如果我询问一个 string != ""
或者一个 is not nothing
,我会困惑该在何时以及为什么使用哪一个。
当验证数据时,我不确定该使用哪一个。
null
表示变量包含对不包含对象的内存空间的引用。
0
是一个数值数据类型,其值为0。
Nothing
实际上并不存在,然而我认为您可能将其视为一个空字符串 ""
,这只是一个不包含值的String
数据类型。
如果您从Javascript
范式来看,可能会感到困惑。在Java中,变量不是真值和假值,因此类型在比较中被考虑。
0是一个数字,您可以使用它来检查数字值(int、short、float、double等)是否为数字0。
null
是指向无处的引用的值,您可以使用它确保引用确实引用了某些内容。
nothing
不是Java的一部分。
对于没有任何信息的情况,最接近nothing
的东西是方法的void
声明。它表示该方法确实不返回任何内容。
请注意,0、null
和空字符串""
都是值,因此包含信息。
例如,0是“5减去5的答案”(以及其他问题)。
null
是对“这个东西是否指向一个对象”的否定回答。
""
可能是回答“你名字中'X'的最长序列是什么?”的答案,除非你的名字是“Xanthippe”。
null
处于不同的类别,它们是值。 - Ingovoid
。 - Ingonull
引用,表示变量不指向任何对象,因此它是一种"nothing",但与Javascript中的undefined
概念不同。equals
进行String
比较,而不是!=
或==
,应该使用string.equals(otherString)
。int
类型默认值为0
。undefined
和 null
一样都是一种“无”或“空”的值,它是一个哨兵值。而在 Java 中,void
表示的是“无”,没有任何值可以满足它。 - user2864740int x;
是一个 int 的声明,不是吗? - Ingo"Null"
在Java中表示对象引用没有指向任何对象,它是空的。
Java中没有叫做"Nothing"的东西。
"0"
表示字符串对象存在且其值为"0"。
""
表示一个空字符串,即字符串对象存在且其值为空。
"nothing"在Java中意味着什么都没有。
0表示一个大于-1且小于1的整数值。
"Null"是指任何对象引用指向内存中不存在的位置,则称为“Null”引用。
在Java中检查String对象的最佳方法是使用org.apache.commons.lang.StringUtils。
如果您不想使用StringUtils
,则首先可以检查sc.nextList()
是否为null(!= null
),如果不为null,则可以检查其是否与""不同(!= ""
)。
空变量未被分配任何值。变量的内存空间为空或包含垃圾值。 而当一个变量为0时,该变量保持值为“0”。内存空间中存储了值“0”。
NULL基本上意味着没有值,或者是未知的。NULL值可以是空的、无意义的,甚至未初始化。例如,当我们说员工奖金为空时,这意味着此人没有获得任何奖金或不符合奖金条件。现在,如果值为0,则意味着员工有资格获得奖金,但当前奖金为零。
例如:
int s; //s=null
int s = 0 ; //s=0
String s="";// s=nothing
void
只是表示一个方法不返回对象或原始类型。 - Kevin Bowersox