许久未复习java的八大基本数据类型了,如今对它的一些精度和特性有些模糊,现在在来复习一遍
一、基本数据类型
首先,java有8种基本数据类型,包括:
- byte
- short
- int
- long
- float
- double
- char
- boolean
其中包括四种整数类型(byte、short、int、long)、两种浮点类型(float、double)、字符类型(char)和布尔类型(boolean)。(实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作)
1、整数类型
byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128(-2^7 )~ 127(2^7-1 ),默认值0
(byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一)
short:短整型,2个字节(16 bit),取值范围-32768(-2^15 )~ 32717(2^15-1 ),默认值0
(Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一)
int:整型,用于存储整数,在内存中占4个字节,取值范围-2147483648(-2^31 )~ 2147483647(2^31-1 ),默认值0
(一般地整型变量默认为 int 类型)
long:长整型,在内存中占8个字节-9223372036854775808(-2^63 )~ 9223372036854775807(2^63-1 ),默认值0L
(这种类型主要使用在需要比较大整数的系统上;)
2、浮点类型
float:单精度浮点型,是32位,在内存中占4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0
(float 在储存大型浮点数组的时候可节省内存空间)
double:双精度浮点型,是64位,用于存储带有小数点的数字,在内存中占8个字节,默认值0
Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。
3、字符类型
char:字符型,用于存储单个字符,内存中占2个字节,取值范围0~65535,默认值为空,最小值为 \u0000(即为0),最大值为\uffff(即为65535);
附记:Java语言支持一些特殊的转义字符序列。
符号 | 字符含义 |
---|---|
\n | 换行 (0x0a) |
\r | 回车 (0x0d) |
\f | 换页符(0x0c) |
\b | 退格 (0x08) |
\0 | 空字符 (0x20) |
\s | 字符串 |
\t | 制表符 |
\" | 双引号 |
\' | 单引号 |
\\ | 反斜杠 |
\ddd | 八进制字符 (ddd) |
\uxxxx | 16进制Unicode字符 (xxxx) |
4、布尔类型
boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false
二、类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。但要注意一下几点:
-
1. 不能对boolean类型进行类型转换。
-
2. 不能把对象类型转换成不相关类的对象。
-
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
-
4. 转换过程中可能导致溢出或损失精度。
-
5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。
1、自动类型
必须满足转换前的数据类型的位数要低于转换后的数据类型
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
------------------------------------> 高
byte,short,char—> int —> long—> float —> double
注意:char转int会通过查ASCII表转码
2、强制类型
-
1. 条件是转换的数据类型必须是兼容的。
-
2. 格式:(type)value type是要强制类型转换后的数据类型