目录
先搞清楚基本数据类型的范围比较
byte(小) ---- short ---- int ---- long ---- float ---- double(大)
类型转换-隐式转换
-
将取值范围小的数据或变量, 给取值范围大的变量赋值, 可以直接赋值
-
简单记 : 小范围的给大范围的, 可以直接给
-
-
这里的小和大 , 指的是取值范围
-
在运算过程中的隐式转换
-
==思路 : 数据类型不统一, 是没办法 (直接) 运算==
-
当取值范围小的数据, 和取值范围大的数据在一起运算, 小的会先提升为大的
-
整数类型默认int,小数类型默认double
-
byte short char 三个类型在运算的时候, 直接提升为 int类型
byte a = 1 ,b = 2;
byte c = a+b; //报错,a和b是byte类型,在运算时提升int类型,(a+b)是int类型的值3。
byte c = 1+2 //不会报错,Java有常量优化机制,编译阶段会把右边的结果3赋值给左边的变量c
类型转换-强制转换
将取值范围大的数据或变量, 给取值范围小的变量赋值, 不能直接赋值, 需要强转
-
简单记 : 大的给小的, 不能直接给
强转格式:变量名1=(变量名1的数据类型)(变量运算)
int a = (int)1.2
注意:强转[有可能]会出现精度损失
赋值运算符
赋值运算符 :
1. 基本赋值运算符
= : 将等号右边的数据, 赋值给左边的变量
2. 扩展赋值运算符
+= : 将符号左右两边的数据, 做加法运算, 将结果赋值给左边的变量.
int a = 10;
a += 20; //a=a+20
System.out.println(a); // 30
-= : a-=20; //a=a-20
*= a*=20; //a=a*10
/= a/=20; //a=a/10
%= a%=20; //a=a%10
注意: 扩展赋值运算符, 底层自带强转效果.
short s = 1;
s = s + 1; //报错,short类型在运算时会变为int,所以需要强制转换
s += 1; //这句代码没有问题, 底层自带强转