BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #46482同步于 2015/12/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

java的boolean几个字节为什么会有争议?

YUEYE
2015/12/15镜像同步10 回复
java的boolean几个字节为什么会有争议? 在看cracking the coding interview 的过程中,一道题开了boolean的256长度的数组,作者提到可以在优化就是变成位向量。空间占用变成了1/8. 那么是不是就说明boolean比1bit大了。 那么这是不是意味着数组里boolean是一字节了。使用了1bit,然后7个是0.实际占用了1Byte。难道是最小的内存寻址单元就是byte,所以占用一个byte? 此外,网上有人说下面这个: 1)boolean a=true;//这个a在JVM中占4个字节即:32位。 2)boolean[] b = new boolean[10];//数组时,每一个boolean在JVM中占一个字节。 ------------------------------------------- 这个错误的看法,网上搜了有不少人这样认为,我之前不知道在哪里看了,我也以为是这样,如下: 1/8字节。1bit。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
icyfox机器人#1 · 2015/12/15
什么争议?没记错的话好像和int一样长 还有你别用大写,那是个类
YUEYE机器人#2 · 2015/12/15
int是4byte的呀。不会吧。 又更新了点信息。你帮看看。 【 在 icyfox 的大作中提到: 】 : 什么争议?没记错的话好像和int一样长 : 还有你别用大写,那是个类
icyfox机器人#3 · 2015/12/15
数据类型包括基本类型和引用类型, (1)基本类型包括:数值类型(包括除boolean外的所有的Java基本数据类型),boolean(在JVM中使用int来表示,0表示false,其他int值均表示true)和returnAddress(JVM的内部类型,用来实现finally子句)。 http://blog.csdn.net/witsmakemen/article/details/9163419 你说的这个题是java的吗?
YUEYE机器人#4 · 2015/12/15
嗯嗯。java的。 【 在 icyfox 的大作中提到: 】 : 数据类型包括基本类型和引用类型, : (1)基本类型包括:数值类型(包括除boolean外的所有的Java基本数据类型),boolean(在JVM中使用int来表示,0表示false,其他int值均表示true)和returnAddress(JVM的内部类型,用来实现finally子句)。 : http://blog.csdn.net/witsmakemen/article/details/9163419 : ...................
YUEYE机器人#5 · 2015/12/15
看来是单个的时候4字节。数组的时候1字节。 我不知道在哪里看的资料,那时候说1/8字节。估计是搞混淆了。谢了。 【 在 icyfox 的大作中提到: 】 : 数据类型包括基本类型和引用类型, : (1)基本类型包括:数值类型(包括除boolean外的所有的Java基本数据类型),boolean(在JVM中使用int来表示,0表示false,其他int值均表示true)和returnAddress(JVM的内部类型,用来实现finally子句)。 : http://blog.csdn.net/witsmakemen/article/details/9163419 : ...................
nuanyangyang机器人#6 · 2015/12/15
【 在 YUEYE 的大作中提到: 】 : java的boolean几个字节为什么会有争议? : : 在看cracking the coding interview 的过程中,一道题开了boolean的256长度的数组,作者提到可以在优化就是变成位向量。空间占用变成了1/8. : ................... Java语言没有规定boolean占几个字节,只是说它的值可以是true或者false。 Java虚拟机规定:一个局部变量可以存储一个boolean(long和double需要两个局部变量来存储)(注意这里的局部变量是JVM的概念,和Java的变量无关),也规定了Java虚拟机有专门的“boolean数组”。但也都没有规定“一个局部变量占多少字节”,也没有规定“boolean数组里一个元素占多少字节”。 但是JVM spec碰巧提到:Oracle的JVM里,boolean数组的元素占8个bit。但这并不意味着所有的JVM都需要这样。 http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.3.4 至于局部变量,就更灵活了。优化器可以对局部变量进行各种疯狂的优化,说不定一个boolean型的变量只是CPU里的一个flag,连寄存器都不占呢。所以,讨论局部变量占用多少子节没什么意义。
YUEYE机器人#7 · 2015/12/15
谢谢暖神。 【 在 nuanyangyang 的大作中提到: 】 : : Java语言没有规定boolean占几个字节,只是说它的值可以是true或者false。 : Java虚拟机规定:一个局部变量可以存储一个boolean(long和double需要两个局部变量来存储)(注意这里的局部变量是JVM的概念,和Java的变量无关),也规定了Java虚拟机有专门的“boolean数组”。但也都没有规定“一个局部变量占多少字节”,也没有规定“boolean数组里一个元素占多少字节”。 : ...................
ml3615556机器人#8 · 2015/12/15
还是暖神水平高…进来学习 发自「贵邮」
a206206机器人#9 · 2015/12/15
android的实现就是你所说的那个 “错误的看法”。没意义