java中null,true,false各占几个字节,在底层分别如何用二进制形式表示
请问各位大神:java中null值本身占内存吗,在c语言里null是0,那么在java里null是多少呢,在底层如何用二进制来表示null呢,同样的还有false和tru...
请问各位大神:java中null值本身占内存吗,在c语言里null是0,那么在java里null是多少呢,在底层如何用二进制来表示null呢,同样的还有false和true,如何用二进制形式表示出来。
展开
4个回答
展开全部
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的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是如何测试出来的呢,可以详细的解释下吗?
谢谢啦
追答
回答呢
展开全部
boolean变量 true和false 在内存占1位,true为1,false为0;和int类型的1和0不同,int类型的1占32位(4字节)。对象为null值,标识对象在new实例化之前,只在栈内分配空间,堆内还没有。用来标识和判断对象是否分配了存储空间。为关键字
追问
恩 你的意思是说null根本不占内存吗。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在 java 中, null 占内存的, 4.
true 和false 就是 1 和 0 了吧, 二进制也一样.都是 1.
http://wenku.baidu.com/view/e5121f3043323968011c92e3.html
这是在百度百科找到的.
另外,关于null的二进制值, 我们实际地来进行一下序列化某个值为null的object,存在一个文件里,记事本打开看一吧, 自己动手, 丰衣足食!
另外这个问题问得好!
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询