java中null,true,false各占几个字节,在底层分别如何用二进制形式表示

请问各位大神:java中null值本身占内存吗,在c语言里null是0,那么在java里null是多少呢,在底层如何用二进制来表示null呢,同样的还有false和tru... 请问各位大神:java中null值本身占内存吗,在c语言里null是0,那么在java里null是多少呢,在底层如何用二进制来表示null呢,同样的还有false和true,如何用二进制形式表示出来。 展开
 我来答
百度网友9308069
2012-07-09 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1926万
展开全部
JVM虚拟机规格标准第二版规定:
字节码形态的boolean的false和true,是用int(32bit整型)的0和1表示,
没有具体规定null的具体值。但虚拟机的逻辑运算通常都转换成int运算,可以肯定null的具体值也是int的一个值。

也就是说字节码形态无论是内存中还是class文件中,boolean, byte, char, int, short这几个类型都是以int形式来输入输出。
(As noted in §3.3.4 and §3.11.1, the Java virtual machine internally converts values of types boolean, byte, char, and short to type int.)

另外,在SE库的IO输出流中,对null的输出是0x70或112,false和true为0和1,由API规定都是1个字节大小。
追问
那boolean类型的跟整型值不能比较的原因是jvm设计好的吗,既然底层都是整型的,为什么不能比较呢,是因为占用的存储空间的大小不一样吗,还是其他原因呢?
另:对于null的输出为0x70或112是如何测试出来的呢,可以详细的解释下吗?
谢谢啦
追答
回答呢
鼻涕一米二
2012-07-09 · TA获得超过816个赞
知道小有建树答主
回答量:460
采纳率:100%
帮助的人:264万
展开全部
boolean变量 true和false 在内存占1位,true为1,false为0;和int类型的1和0不同,int类型的1占32位(4字节)。对象为null值,标识对象在new实例化之前,只在栈内分配空间,堆内还没有。用来标识和判断对象是否分配了存储空间。为关键字
追问
恩 你的意思是说null根本不占内存吗。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-07-09 · TA获得超过216个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:165万
展开全部
在 java 中, null 占内存的, 4.
true 和false 就是 1 和 0 了吧, 二进制也一样.都是 1.
http://wenku.baidu.com/view/e5121f3043323968011c92e3.html
这是在百度百科找到的.
另外,关于null的二进制值, 我们实际地来进行一下序列化某个值为null的object,存在一个文件里,记事本打开看一吧, 自己动手, 丰衣足食!
另外这个问题问得好!
更多追问追答
追问
我看了你提供的那个网址,里面说的是Object obj = null; obj 这个引用占用4个byte,貌似说的并不是null本身占用的内存。
追答
obj  就是 null.你怎么能说 貌似说并不是 呢......
凡是能为 null 的, 不都是 Object 么?

参考资料: http://wenku.baidu.com/view/e5121f3043323968011c92e3.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小强0106
2012-07-09
知道答主
回答量:75
采纳率:0%
帮助的人:19.8万
展开全部
323
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式