java的基本数据类型
在Java中,共有8种基本数据类型,其中有4种整形,2种浮点型,1种char类型,1种表示真值的boolean型。
- 整型
整型用于表示小数点后没有值得类型,共有四种,主要是表示范围的差别:
类型 | 所占空间 | 取值范围 |
---|---|---|
int | 32位/4字节 | [-231,231-1]即[-2147483648,2147483647],大概表示正负20亿的范围 |
short | 16位/2字节 | [-215,215-1]即[-32768,32767]即正负3万左右 |
long | 64位/8字节 | [-263,263-1] |
byte | 8位/1字节 | [-128,127] |
- java与C/C++在整型上的区别?
- java整型所占空间是固定的,可移植性强,相反C/C++会在不同机器上选择最高效的整型,导致一个可以在32位操作系统上运行的程序可能在16位系统上无法运行
- int知识点
- 为什么负值比正值多表示一位?
- 因为在计算机中有0000…00(+0)与1000…00(-0)都表示0,但显然,我们不需要2个0,所以,用-0来表示最小的那一位,所以负数比正数多表示一位。
- 为什么正数的最大值是2^31-1?
- 一个int是32位,即32个二进制位,由于要表示正负,所以要去掉一位标志位,即用来表示数据的位数为31,所以最大值应该是011…(共31个1)…11,最大值再加1即为231,所以,最大值为231-1
- 使用中怎么获取最大值最小值?
Integer.MIN_VALUE
获取最小值Integer.MAX_VALUE
获取最大值Integer.SIZE
获取int位数
- 为什么负值比正值多表示一位?
- 整型表示方法
- long类型:
200000000L
或2000000l
即在数字后加上L
或者l
- 2进制:
0b1001
或0B1001
即在数字前加上0b
或者0B
- 16进制:数字前加
0X
或0x
1_000_000
可在数字中加下划线,使其更加直观。
- long类型:
- 浮点类型
java中的浮点型遵循IEEE754规范,采用一位符号位、多位指数位、多位位数位的形势存储数据。
类型 | 所占空间 | 可表示小数位 |
---|---|---|
float | 4字节 | 6-7位小数 |
double | 8字节 | 15位小数 |
- 由于float的精度只有double类型的一半,所以通常情况下都用double类型,float在很多情况下并不适用。
- 表示方法
3.14
便表示一个double类型的小数,不需要加任何修饰3.14f
或3.14F
表示float类型小数
- 溢出与出错情况表示
Double.NEGATIVE_INFINITY
表示-Infinity(负无穷)
Double.POSITIVE_INFINITY
表示Infinity(正无穷)
Double.isNaN(3.14)
判断一个值是否是一个数
- 由于浮点数采用IEEE规范来存储,即采用指数加位数的形势来表达一个数,所以很难把一个十进制的数表示为他本身,举个例子
2.00-1.10
的运算结果为0.8999999999999999
,总有无法舍弃的小数,所以在涉及到必须精确无比的计算时,不能用double,可以使用大数运算类BigDecimal
.
- char类型
java采用了UTF-16编码,而char类型则表示了UTF-16编码的一个代码单元,表示方法如下:
'A'
表示的是一个字符,也可以用16进制数来表示,'A'
的16进制为'\u0041'
- boolean类型
boolean类型表示逻辑判断有true
和false
两个值
- 值得注意的是,与C++/C不同,在java中,
0
不再表示false
,非0
值也不再表示true
,这使得一些在C中很难发现的bug在java中不会发生。