赋值运算符
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。接下来通过一张表来展示Java中的赋值运算符及其用法,如表1所示。
表1 赋值运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | a=3;b=2; | a=3;b=2; |
+= | 加等于 | a=3;b=2;a+=b; | a=5;b=2; |
-= | 减等于 | a=3;b=2;a-=b; | a=1;b=2; |
*= | 乘等于 | a=3;b=2;a*=b; | a=6;b=2; |
/= | 除等于 | a=3;b=2;a/=b; | a=1;b=2; |
%= | 模等于 | a=3;b=2;a%=b; | a=1;b=2; |
在赋值过程中,运算顺序从右往左,将右边表达式的结果赋值给左边的变量。在赋值运算符的使用中,需要注意以下几个问题。
1.在Java中可以通过一条赋值语句对多个变量进行赋值,具体示例如下:
int x, y, z;
x = y = z = 5; // 为三个变量同时赋值
在上述代码中,一条赋值语句将变量x,y,z的值同时赋值为5。需要特别注意的是,下面的这种写法在Java中是不可以的:
int x = y = z = 5; // 这样写是错误的,因为没有预先声明变量y、z的数据类型
2.在表1中,除了“=”,其他的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x+3,再将运算结果赋值给变量x。其余的-=、*=、/=、%=赋值运算符都可依此类推。
多学一招:赋值运算符中强制类型转换的自动实现
在前面小节中介绍过,在为变量赋值时,当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,需要进行强制类型转换。例如,将一个int类型的值赋给一个short类型的变量,需要显式地进行强制类型转换。然而在使用+=、-=、=、/=、%= 赋值运算符时,强制类型转换会自动完成,程序不需要做任何显式地声明,如文件1所示。
文件1 Example05.java
1 public class Example05 {
2 public static void main(String[] args) {
3 short s = 3;
4 int i = 5;
5 s += i;
6 System.out.println("s = " + s);
7 }
8 }
运行结果如图1所示。
图1 运行结果
文件1中,第5行代码为赋值运算,虽然变量s和i相加的运算结果为int类型,但通过运算符+=将结果赋值给了short类型的变量s时,Java虚拟机会自动完成强制类型转换,从而得到s的值为8。