// int最小值-2<sup>31</sup>: -2147483648
public static final int MIN_VALUE = 0x80000000;
// int 最大值2<sup>31</sup>: -1 2147483647
public static final int MAX_VALUE = 0x7fffffff;
基本数据类型long的包装类型Long中的最小值和最大值如下:
// long最小值-2<sup>63</sup>: -9223372036854775808
public static final long MIN_VALUE = 0x8000000000000000L;
// long最大值2<sup>63</sup>-1:9223372036854775807
public static final long MAX_VALUE = 0x7fffffffffffffffL;
The Java Virtual Machine encodes boolean array components using 1 to represent true and 0 to represent false. Where Java programming language boolean values are mapped by compilers to values of Java Virtual Machine type int, the compilers must use the same encoding.
https://meisen.pro/article/46704502f9084c30ba8a77817847137f
夯实Java基础,为架构师而努力。
8大基本数据类型对比
今天先来说说Java的
8
个基本数据类型:byte
、short
、int
、long
、float
、double
、boolean
、char
。每种都有其对应的包装类型:Byte
、Short
、Integer
、Long
、Float
、Double
、Boolean
、Character
。今天的主角不是包装类型,而是8
个基本数据类型。为了表示得更清楚,通过一个表格来说明8个基本数据类型占用的字节数、占用多少位、默认值、最大值、最小值。关于int和long 的最小值和最大值
每种
数据类型
的最小值和最大值都在其包装类型
中有定义,比如说int
的包装类型Integer
中定义的int
的最小值和最大值如下:基本数据类型
long
的包装类型Long
中的最小值和最大值如下:byte、short、int、long
这四个基本数据类型都是整型的数据类型,一般代码中不带符号的整型字面量,几乎都是
int
类型的。如果需要定义long
类型的变量,需要在整型字面量后面加上大写的L
。其实加上小写的l
也是可以的,但是由于小写的l
和整数1
很相似,为了代码的可读性,一般都要求写成大写的L
。定义这四个基本类型。
float、double
关于
float
和double
需要知道float
和double
不能用于表示精确的值,比如说货币。如果要表示货币这种精度要求非常高的数据,可以使用BigDecimal
。float是单精度、占4个字节,单精度的浮点数有效数字是8位。
double是双精度,占8个字节,双精度的浮点数有效数字是16位。
如果你想节约内存,可以使用float
Java中不带任何后缀的浮点数默认是
double
类型的。char
char
类型数据可以任何字符。且只能表示一个字符。char类型是可以运算的因为char在
ASCII
字符编码表中,有对应的数值。在Java中,对char类型字符运行时,直接当做ASCII表对应的整数来对待。
boolean
boolean
很简单,它的默认值是false
,且只有两个值true
和false
。但是boolean
到底占几个字节呢?我比较赞同的一种说法是4个字节,理由来源是《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。
其实还有两种说法
1个bit
理由是boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中只需要1位(bit)即可存储,位是计算机最小的存储单位。
1个字节
理由是虽然编译后1和0只需占用1位空间,但计算机处理数据的最小单位是1个字节,1个字节等于8位,实际存储的空间是:用1个字节的最低位存储,其他7位用0填补,如果值是true的话则存储的二进制为:0000 0001,如果是false的话则存储的二进制为:0000 0000。
数据类型之间的转换
数据类型之间是可以转换的,除了boolean之外,其他7个数据类型是可以相互转换的,并且有一个很专业的名字--自动类型转换。先来看看下一张图。
![image-20191013224703973](/Users/meisen/Library/Application Support/typora-user-images/image-20191013224703973.png)
几个注意点:
自动类型转换
必须满足转换前的数据类型的位数要低于转换后的数据类型
比如说
short
类型数据可以自动转换成int
类型的数据,float
类型的数据可以自动转换成double
类型的数据。强制类型转换
将容量大的数据类型转换成容量小的数据类型只能使用强制类型转换, 并且可能出现溢出。
强制类型转换的格式:
byte i = (byte) 123
;比如说:
以上就是本次要说的Java的基本数据类型。下次来说说包装类型中的
Integer
和缓存池参考文献
Java语言规范