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给出的优先级进行计算,同级别的按照结合性依次计算。在通常开发时,开发人员使用圆括号指定所期望的执行顺序,这样不但方便,而且可以大大增强代码的可读性,避免错误。