最近在Java采访中问了这个问题。尝试并搜索了解决方案,但找不到。如果有人知道,请评论解决方案。这会很有帮助。
在数字基本类型中为零。Float和double各有两个零。这是九个值。然后是int和long的MIN_VALUE
。是十一点。
因此:
int x = 0;
int x = Integer.MIN_VALUE;
long x = 0;
long x = Long.MIN_VALUE;
byte x = 0;
short x = 0;
char x = 0;
double x = 0.0;
double x = -0.0;
float x = 0f;
float x = -0f;
然后将这些值中的每一个包装为一个对象:
Integer x = 0;
Integer x = Integer.MIN_VALUE;
Long x = 0L;
Long x = Long.MIN_VALUE;
Byte x = 0;
Short x = 0;
Character x = 0;
Double x = 0.0;
Double x = -0.0;
Float x = 0f;
Float x = -0f;
总共22个。
(我不会称这些对象为更多的值。它们再次是相同的11个值,但被包裹在对象中。但如果你应该总共找到22个,我认为这一定是它。(
注意,对于较小的积分类型,如short,执行-x
会将它们扩展为int,因此x==-x
不适用于Short.MIN_VALUE
。
对于浮点零,x==-x
的计算结果为true,因为即使正零和负零是不同的值,它们也被视为彼此相等。