目录
一、运算符
就是对常量或者变量进行操作的符号
二、算术运算符
1.+ - * /:
- 整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。
- 小数直接参与运算,得到的结果有可能是不精确的。
2.%:
取模、取余,也是除法运算,但是获取的是余数
3.隐式转换(自动类型提升)
数据类型不一样时是不能进行计算的,取值范围小的数值转化为取值范围大的数值
类型从小到大:
- byte < short < int < long < float < double
两种提升规则:
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。
- byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。
byte b = 10;
short s = 20;
long n = 100L;
result = b + s + n;
问变量result是什么类型的?long
解释:
第一步:变量b和变量s里面的值会先提升为int参与运算。
int + int + long
第二步:而long类型的取值范围是大于int的取值范围的。
所以变量b和变量s里面的值会再次提升为long。
long + long + long。
所以最终结果是long类型的。
4.强制转换
把一个取值范围大的数据或者变量赋值给另一个取值范围小的变量。需要强制转换
目标数据类型 变量名 = (目标数据类型)被强转的数据
public class OperatorDemo2 {
public static void main(String[] args) {
double a = 12.3;
int b = (int) a;
System.out.println(b);//12
}
}
public class OperatorDemo3 {
public static void main(String[] args) {
byte b1 = 10;
byte b2 = 20;
byte result = (byte)(b1+b2)
System.out.println(result);//12
}
}
注:可能会导致数据的精度丢失