对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。
0.变量的分类:
变量按数据类型分:
- 基本数据类型:(8中)
- 数值型
- 整数类型
- byte
- short
- int
- long
- 浮点类型
- float
- double
- 整数类型
- 字符型:char
- 布尔型:boolean
- 数值型
- 引用数据类型:
- 类:class <——字符串在这
- 接口:interface
- 数组:[](array)
- 类:class <——字符串在这
变量按类中声明的位置分:
- 成员变量
- 局部变量
1.整数类型:
2.浮点型:
3.字符类型:
- char类型变量,通常使用一对'',内部只能写一个字符,也可以填转义字符
4.布尔类型:
只能取两个值:true、false
5.字符串类型:String
- String不是基本数据类型,属于引用数据类型
- 使用方式与基本数据类型一致。如:String str=“abc”;
- 一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。如:str=str+"abc"; str=str+100;
- String可以和8种基本数据类型变量做运算的。结果用String接着
5.数据类型转换
(1)基本数据类型之间的运算规则:
这里讨论7种基本数据类型变量之间的运算(不包含布尔类型)
① 自动类型提升:
当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte、char、short>int>long>float>double
注意:当byte,char,short三种类型的变量做运算时,结果为int类型。
② 强制类型转换:
自动类型提升的逆运算
double d1=12.2; // 截断操作 int i1=(int)d1;
注意:强制类型转换可能导致精度损失
没有精度损失:
long l1=123; short s1=(short)l1;
有精度损失:
int i1=128; byte b=(byte)i1; // -128
6.特殊情况
特殊情况1:如:
long l=123123;
此时没有加(l、L)不会报错,因为自动类型提升,将其转换成了int类型,没有超出范围,所以不会报错。
但是如果数值过大:
long l=1231231231231231231231312; // x
long l=1231231231231231231231312L; //√
特殊情况2:
byte b=12;
byte b1=b+1;
此时编译会报错:因为整型常量,默认类型为int型,浮点型常量默认类型为double型