在Java中有8种基本数据类型来存储数值、字符和布尔值:
1、整数类型:
表示没有小数的部分的数值,也可以表示负数。其中Java支持十进制、二进制、八进制和十六进制数的转换
十进制整数,例如12,-127,0。
二进制整数,以0b开头,例如0b011 (对应于十进制的3 ) (JDK7.0开始)。
八进制整数,以0开头,例如014(对应于十进制的12)。
十六进制整数,以0x或0X开头,例如0XF(对应于十进制的15)。
数据类型 | 内存 |
---|---|
byte | 8位 |
short | 16位 |
int | 32位 |
long | 64位 |
小知识点在java中表示二进制数在前面加上0b并且还可以在数字之间加上下划线(”_”),例如:0b1010_0111,下划线只是为了方便阅读在编译的时候会去掉下划线。
2、浮点型
包含单精度的float和双精度的double,分别用32、64bits表示。
数据类型 | 内存 |
---|---|
float | 32位 |
double | 64位 |
浮点型数据有如下两种表示方式:
十进制形式,例如3.14。
科学计数法形式,例如3.14e1。
值得注意的是,小数在不进行说明的情况下,其被默认为double类型,如 float f = 1.3;是错误的。
3、字符型
用于表示单个字符,通常用来表示字符常量,例如:’A’是编码65对应的字符常量。字符型采用Unicode编码,一个Unicode编码占2个字节(即16位),由于字符型不存在正负之分,所以其表示范围为0至2的16次方-1(0~65535)。
数据类型 | 内存 |
---|---|
char | 16位 |
4、布尔型
表示逻辑,在java中只有两个值ture和false,数值和布尔值之间不能进行互换,也不能把null赋值给布尔类型变量。但在二进制中,规定0为真,1为假。
5、基本数据类型的转换
自动转换:
又称其为隐式类型转换。对于自动转换(隐式),无需任何操作。因为较大的类型(如int)要保存较小的类型(如byte),内存总是足够的,不需要强制转换。如果将字面值保存到byte、short、char、long的时候,也会自动进行类型转换。
强制转换:
又称其为显式类型转换。如果要把大的转成小的,或者在short与char之间进行转换,就必须强制转换,也被称作缩小转换,因为必须显式地使数值更小以适应目标类型。强制转换采用转换操作符()。严格地说,将byte转为char不属于缩小转换,因为从byte到char的过程其实是byte-->int-->char,所以扩大和缩小都有。强制转换除了可能的精度损失外,还可能使模发生变化。