下面这些问题的答案也许会出乎你的意料,看看能答对几道吧。
java中 boolean 类型变量占几个字节
绝大部分人的回答是一个字节,但实际上应该区分这个变量是被存放在堆上,还是栈上;
如果是堆上,那么是一个字节;如果是栈上,应该是4个字节;
如何证明:写一个main方法,定义一个boolean类型变量,然后编译为 字节码 ,再使用javap命令查看对应的字节码,发现是这个样子的:i_const_1;说明在字节码层面将boolean类型的处理成了int类型;
java中,0有几种表示方式
看到这个问题,估计很多人会一脸懵~;
那么换一种稍微简单点的问法,0x0000000和0x8000000 的区别是什么,前者表示+0.0 后者表示-0.0;
那么0x0000000 和 0x8000000相等吗?尽管内存中存储的值不同,但在语言层面,二者是相等的,比较会返回true;
那么java中的0到底有几种表示方式呢?
0、false、\u0000、0L、0F、0D;每一种基本类型数据都对应其一种表示方式。
关于 NAN 的含义以及数值比较问题
NAN的全称是Not an num;
NAN和任何数值比较,都是不相等的;也就是 NAN != a 无论a是什么值,都会返回true;
但其他比较,比如NAA>a 或者 NAN<=a都会返回flase