3.6 赋值运算
赋值是编程中最常用的运算之一,Java中的赋值运算有两种:普通赋值运算、运算赋值运算。本节将对这两种赋值运算符进行介绍。
3.6.1 普通赋值运算
普通赋值运算符就是“=”号,在前面的例子中已经多处使用,如:
int i=12;
说明:把值12赋给变量i。
与其他语言赋值运算符稍有不同的是,Java中的赋值运算符有返回值,可以把“a=b”看作一个表达式(称为赋值表达式),其返回值就是b的值。因此,其可以级联使用,例如:
int a=b=c=d=12;
上面的代码相当于:
int a=(b=(c=(d=12)));
基本数据类型进行赋值运算时要注意下列规则:
· boolean型的只能赋给boolean型。
· 其他七种类型如果能够自动转换则可直接赋值,否则要进行强制类型转换。
3.6.2 运算赋值运算
运算赋值运算是指赋值的同时还可以进行运算,其语法为“X op= Y”,含义是:
· 其中“op”表示某种运算符,前面讲过的运算符都可以,如“+”、“−”、“>>>”等。
· 整个操作相当于“X=(<X的类型>)(X op Y)”。
下面的例子说明了其使用方法,代码如下。
1 //代码实现 2 public class Sample3_15 3 { 4 public static void main(String args[]) 5 { 6 int a=12; 7 byte b=13; 8 a >>=1; 9 b +=3; 10 System.out.println("a="+a); 11 System.out.println("b="+b); 12 } 13 }
将如上代码编译运行,其结果如图3-20所示。
图3-20 Sample3_15的编译运行结果
从图3-20中可以看出:
· 变量a的值被右移了一位,相当于除以2,结果为6。
· 变量b的值被加3,结果为16。
· 对于“b +=3;”,由于赋值运算操作中有隐含的强制类型转换,所以虽然“+”会将结果提升成int型,经过强制类型转换后,程序照常执行。
3.6.3 括号及运算符间的优先级关系
本章前面介绍了Java中的一些主要运算符。在开发过程中,其经常需要混合使用,这就有必要了解这些运算符间的优先级关系。
本节将对运算符间的优先级关系进行介绍。表3.2给出了这些运算符间的优先级关系,其中越靠上的优先级别越高,同一行的优先级相同。
表3.2 运算符优先级
如果不使用圆括号,同时使用多个运算符时就按照表3.2给出的优先级进行计算,同级别的按照结合性依次计算。在通常开发时,开发人员使用圆括号指定所期望的执行顺序,这样不但方便,而且可以大大增强代码的可读性,避免错误。