JavaSE_04 数据类型
程序员文章站
2022-07-14 11:10:33
...
JavaSE_04 数据类型
1.基本数据类型
基本数据类型也叫做值类型。
四类八种基本数据类型:
整数型:byte、short、int、long
浮点型:float、double
字符型:char
布尔型:boolean
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 | -128~127 |
短整型 | short | 2个字节 | -32768~32767 |
整型 | int(默认) | 4个字节 | -2的31次方~2的31次方-1 |
长整型 | long | 8个字节 | -2的63次方~-2的63次方-1 |
单精度浮点数 | float | 4个字节 | 1.4013E-45~3.4028E+38 |
双精度浮点数 | double(默认) | 8个字节 | 4.9E-324~1.7977E+308 |
字符型 | char | 2个字节 | 0-65535 |
布尔类型 | boolean | 1个字节 | true false |
2.引用数据类型
包括类、数组、接口、枚举……
3.类型转换
由于Java是强类型语言,所有要进行有些运算的时候,需要用到类型转换。
运算中,不同类型的数据先转化位同一类型,然后进行运算。
容量由低到高分别是:byte,short,char,int,long,float,double
强制类型转换(显示)
一个 long 类型变量要转成 int 类型需要强制转换。
特点:代码需要进行特殊的格式处理,不能自动完成。
格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据;
注意:
- 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
- byte、short、char 这三种类型都可能发生数字运算,例如加法。
- byte、short、char 在运算的时候,都会被首先提升成 int 类型,然后计算。
- boolean类型不能发生数据类型转换。
long i = 100L;
int j = i; //报错
int j = (int)i;
//数据溢出
int c = (int)60000000000L; //1705032704
//精度损失
int b = (int)3.9; //3
//字符转换
//计算机的底层会用一个数字(二进制)来表示字符A。
int d = 'A'
System.out.println(d+1); //66 字符A被当作65进行处理
//byte + byte --> int + int --> int
//byte会首先提升为int进行计算,所以结果需要用int接收
byte a = 40;
byte e = 50;
byte f = a + e; //报错
自动类型转换(隐示)
一个 int 类型变量和一个 byte 类型变量进行加法运算。
运算结果,变量的类型将是 int 类型,这就是数据类型的自动类型转换。
特点:代码不需要进行特殊处理,自动完成。
规则:数据范围从小到大。(与字节数不一定相关)
int i = 1;
byte b = 2;
//报错
byte x = b + j;
// int类型和byte类型运算,结果是int类型
int j = b + i;
4.注意
-
字符串不是基本类型,而是引用类型。
-
浮点型可能只是一个近似值,并非精确的值。
-
数据范围与字节数不一定相关。例如float数据范围比long更加广泛,但是float是4字节,long是8字节。
-
浮点数当中默认类型是double。如果一个要使用float类型,需要加上一个后缀F。如果是整数,默认为int类型, 如果一个要使用long类型,需要加上一个后缀L。 推荐使用大写字母后缀。
-
计算金钱的话推荐使用 BigDecimal 来进行保存。