前言:在java程序中经常会使用到赋值运算符,但赋值运算符在表达式中进行计算时有几个要点需要注意。本文将重点讲述其中的注意点。
1. 赋值运算符有哪些?
=、+=、-=、*= 、/=、%=
2. 赋值运算符
赋值运算符,就是将符号右边的值,赋给左边的变量。
以赋值运算符中的“+=”为例:
public static void main(String[] args){
int i = 5;
i += 2;
// i=i+2 ==> 5+2 ==>2 i=7
System.out.println(i); //输出结果是7
}
3. 赋值运算符要注意的点
3.1 要点1:
观察下面代码:
public static void main(String[] args){
byte b1 = 5;
byte b2 = 5;
b1 += 1; //正确,正常计算
b2 = b2 + 1; //报错
System.out.println(b1);
System.out.println(b2);
}
分析:将程序放在eclipse编辑器内我们可以看到,b2 = b2 + 1程序会报错,而b1 += 1不会。是因为:b1 += 1在逻辑上可以看作是b1=b1+1,byte类型在参与运算时会被提升为int类型,再向byte类型赋值时发生错误,因为不能直接将取值范围大的类型赋值到取值范围小的类型。但是,b2=b2+1进行两次运算,而+=为复合运算符,只运算一次并带有强制转换的特点,即b1 += 1就是b1=(byte)(b1+1),因此程序没有报错。
3.2 要点2
观察下面代码:
分析:可以看到,最后控制台输出的num值变为-36,故复合赋值运算存在数值溢出的隐患,复合赋值运算时编译器不会检查值的范围。