网站建设基础 ppt总排行榜总点击榜总收藏榜
类型 | 分类 | 所占字节 | 取值范围 |
boolean | 布尔型 | 1bit | 0 false、 1 true (1个bit 、1个字节、4个字节) |
char | 字符型(Unicode字符集中的一个元素) | 2字节 | -32768~32767(-2的15次方~2的15次方-1) |
byte | 整型 | 1字节 | -128~127(-2的7次方~2的7次方-1) |
short | 整型 | 2字节 | -32768~32767(-2的15次方~2的15次方-1) |
int | 整型 | 4字节 | -2147483648~2147483647(-2的31次方~2的31次方-1) |
long | 整型 | 8字节 | -9223372036854774808~9223372036854774807(-2的63次方~2的63次方-1) |
float | 浮点型 | 4字节 | 3.402823e+38~1.401298e-45 和 -3.402823e+38~-1.401298e-45 (e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方) |
double | 浮点型 | 8字节 | 1.797693e+308~4.9000000e-324 和 -1.797693e+308~-4.9000000e-324(同上) |
Java编程语言支持的八种原始数据类型是:
- byte:byte数据类型是8位带符号的二进制补码整数。最小值为-128,最大值为127(含)。的byte数据类型可以是在大型保存存储器有用 阵列,其中存储器的节省实际上重要的。它们也可以用于int限制其位置的地方,以澄清您的代码;变量范围有限的事实可以作为文档的一种形式。
- short:short数据类型是一个16位带符号的二进制补码整数。最小值为-32,768,最大值为32,767(含)。与一样byte,也适用相同的准则:在实际short需要节省内存的情况下,可以使用a来以大阵列保存内存。
- int:默认情况下,int数据类型是32位带符号的二进制补码整数,其最小值为-231,最大值为231 -1。在Java SE 8和更高版本中,可以使用int数据类型表示无符号的32位整数,其最小值为0,最大值为2 32 -1。使用Integer类可将int数据类型用作无符号整数。有关更多信息,请参见“数字类”部分。像静态方法compareUnsigned,divideUnsigned等已被添加到 Integer类,以支持算术运算的无符号整数。
- long:long数据类型是64位二进制补码整数。带符号的long的最小值为-263,最大值为263 -1。在Java SE 8和更高版本中,可以使用long数据类型表示无符号的64位长,其最小值为0,最大值为2 64 -1。当您需要的值范围比所提供的宽时,请使用此数据类型int。该 Long班还包含方法,如compareUnsigned,divideUnsigned等长,以支持算术运算的无符号。
- float:float数据类型是单精度32位IEEE 754浮点。其值的范围超出了本文的讨论范围,但在Java语言规范的“ 浮点类型,格式和值”部分中进行了指定。与针对byte和的建议一样,如果您需要将内存保存在大的浮点数数组中short,请使用float(而不是double)。永远不要将这种数据类型用于精确值,例如货币。为此,您将需要使用 java.math.BigDecimal类。 数字和字符串覆盖BigDecimal以及Java平台提供的其他有用的类。
- double:double数据类型是双精度64位IEEE 754浮点数。其值的范围超出了本文的讨论范围,但在Java语言规范的“ 浮点类型,格式和值”部分中进行了指定。对于十进制值,此数据类型通常是默认选择。如上所述,永远不要将这种数据类型用于精确值,例如货币。
- 布尔值:boolean数据类型只有两个可能的值:true和false。将此数据类型用于跟踪真/假条件的简单标志。这种数据类型代表一小部分信息,但是其“大小”并不是精确定义的。
- char:char数据类型是单个16位Unicode字符。它的最小值为’\u0000’(或0),最大值为’\uffff’(或65,535,包括端值)。
boolean究竟占几个字节?
1、1个bit(1/8个字节):
由于boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中按位运算,仅需1位(bit)即可,位是计算机中最小的存储单位。
2、1个字节
虽然编译后1和0只需占有1位空间,但是由于计算机存储数据的最小单位是1个字节,因此boolean类型的值在实际存储的时候是用1位存储,其他7位用0填补,即true:0000 0001,false:0000 0000。
3、4个字节:
《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。
从《Java虚拟机规范》中我们看到,虚拟机使用int来代替boolean,这样岂不是更加浪费内存空间了吗?经过查阅资料发现,这是由于计算机CPU所造成的,对于当下32位的处理器(CPU)来说,一次处理数据是32位(这里不是指的是32/64位系统,而是指CPU硬件层面),具有高效存取的特点。
总结: boolean单个占4个字节,boolean数组1个字节,Java规范未明确定义,具体要看虚拟机,而虚拟机又要看处理器(CPU)。