目录
数据类型
1.常量
字面常量
比如
System.out.println('a');
a就是字面常量 还有数字常量 1,2,3.....
常量即在程序运行过程中不能进行改变的量
2.变量
即在程序在运行过程中可以发生改变的量
int a = 10;
a=20;
变量的命令遵守标识符的规则
3.数据类型
Java中的8大基本数据类型
主要有4类:整形,字符型,浮点型,布尔型
注意:
-
int型不管在多少位的系统下,都是4个字节
-
整形和浮点型都是有符号的
-
默认整形为int,默认浮点型为double
4.类型转化
当运算的类型不一致时,就会发生类型的转换,主要有自动类型转化和强制类型转换
自动类型转换
代码不用特殊处理,运行时编译器自动进行处理,一般将小的数据类型转换为大的数据类型
int a = 10;
//自动类型转换
long b = 20;
b=a;//a的类型是int比b的类型long要小,所以在赋值是编译器自动将a的类型提升为long
short c = 120;//ok
a = c;//ok赋值时将c的类型自动提升为int
强制类型转换
需要经过一定的处理,不会自动完成,特点就是将表示范围大的强制转换为范围小的
int a = 10;
//强制类型转换
//a=b;//报错,将long型赋值给int型,int是放不下的,所以报错
a = (int)b;//将long型强制类型转换为int,但是不安全,会造成数据丢失
//c = a;//报错,将大类型的数据给小类型的数据
c = (short)a;//将int类型强制转换为short
}
-
不同数字类型的变量进行赋值时,表示范围小的会自动转为表示范围大的
-
如果要将范围大的类型赋值给小的类型时,需要强制类型转换,但是会造成精度的丢失
-
将一个字面常量进行赋值时,java会进行范围检查,比如byte a = 120; √ byte b = 130; ×
类型提升
不同数据类型之间进行运算时,类型小的会自动转换为大的进行运算
-
long和int之间,会转成long进行运算
long d = 10; int e = 20; long f = d+e;//int自动提升为long
-
byte和byte
byte t = 10;
byte y = 10;
// byte i = t + y;
//错误,原因是t和y虽然都是byte,
//但是运算时会将他们自动转为int类型,得到的结果也是int类型,将int类型给byte肯定会错
byte i = (byte)(t+y);//正确
运算时会将他们自动转为int类型,得到的结果也是int类型,将int类型给byte肯定会错,因为计算机在读写数据时是按照一次一个字节的方法读写数据,比如short和byte都是先转成int再进行计算