数据类型有两种,一种基本数据类型有4类8种基本数据类型,引用数据类型有3类,它们分别为:
基本数据类型
整型
整型(整数类型)是一种数据类型,它用来存储整数,包括正整数和负整数还有0。整型分为4中,分别为:byte类型、short类型、int类型(默认)和long类型
类型 | 占用存储空间 | 表数范围 |
---|---|---|
byte | 1字节 | -27 ~ 27-1(-128~127) |
short | 2字节 | -215 ~ 215-1 |
int | 4字节 | -231 ~ 231-1 |
long | 8字节 | -263 ~ 263-1 |
整型常量的四种进制表示形式
十进制整数,如:10, -20, 0 表示十进制
八进制整数,要求以 0 开头,如:011 表示十进制 9
十六进制数,要求 0x 或 0X 开头,如:0x21 表示十进制 33
二进制数,要求0b或0B开头,如:0b011001 表示十进制 25
Java语言的整型常数默认为int型,声明long型常量后在后面加上" L " 。
浮点型
浮点数是java中带小数的数据。浮点型可分为float类型和double类型(默认)。
类型 | 占用存储空间 | 表数范围 |
---|---|---|
float | 4字节 | -3.403E38~3.403E38 |
double | 8字节 | -1.798E308~1.798E308 |
Java浮点类型常量有两种表示形式
十进制数形式,例如:3.14 314.0 0.314
科学记数法形式,如314e2 314E2 314E-2
注意 :
浮点数不精确,最好用需要使用BigDecimal类,然后用equals()方法进行比较。
例:
BigDecimal bd = BigDecimal.valueOf(1.0);
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
System.out.println(bd);//0.5
System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);//0.5000000000000001
BigDecimal bd2 = BigDecimal.valueOf(0.1);
BigDecimal bd3 = BigDecimal.valueOf(1.0/10.0);
System.out.println(bd2.equals(bd3));
结果:
0.5
0.5000000000000001
true
字符型
- char类型是一个单一的 16 位 Unicode 字符,Unicode具有从0到65535之间的编码,在内存中占2个字节,,在Java中使用单引号来表示字符常量,也可以用Unicode编码表中的字符,例如’A’是一个字符,它与”A”是不同的,”A”表示含有一个字符的字符串
例如:
char a = 'a';
char b = '\u0061';
输出:
a
a
a
- Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的含义。常用的转义字符及其含义和Unicode值
例如:
转义符 | 含义 | Unicode值 |
---|---|---|
\b | 退格(backspace) | \u0008 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\t | 制表符(tab) | \u0009 |
\" | 双引号 | \u0022 |
\' | 单引号 | \u0027 |
\\ | 反斜杠 | \u005c |
布尔型
布尔型用来判断逻辑条件,占内存中一位(不是一个字节),只有true和false两个值。
例如:
boolean flag ;
flag = true; //或者flag=false;
if(flag) {
// flag=true时执行
} else {
// flag=false时执行
}
注意:
if(flag==true)也可以使用,但容易与if(flag=true)混淆,所以推荐写法是if(flag)或if(!flag)。
自动类型转换
自动类型转换又称为:隐式类型转换
有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最
大的那一种数据类型,然后进行计算
自动转换规则:
boolean类型不可以转换为其他的数据类型
byte、short、char之间不会相互转换,他们三者在计算时首先会转换为int类型
整型、字符型、浮点型的数据在混合运算中相互转换,转换时遵守以下原则:
强制类型转换
- 强制类型转换又称为:显示类型转换
- 容量大的数据类型转换为容量小的数据类型时,需要使用强制类型转换。
- 格式:变量 = (目标类型) 值
- 注意:在强制类型转换过程中,源类型的值可能大于目标类型,因此
可能造成精度降低或溢出,使用时需注意