第05部分:赋值运算符

赋值运算符把值存储在某种变量中或赋予某种变量。左侧操作数必须是适当的局部变量、数组元素或对象字段。右侧操作数可以是与变量兼容的任何类型。赋值表达式的计算结果是赋予变量的值。不过,更重要的是,赋值表达式的副作用是执行赋值操作。和其他二元运算符不同的是,赋值运算符是右结合的,也就是说,赋值表达式 a=b=c 从右向左执行,即 a=(b=c)。

基本的赋值运算符是 =。别把它和相等运算符 == 搞混了。为了区别这两个运算符,我们建议你把 = 读作“被赋值为”。

除了这个简单的赋值运算符之外,Java 还定义了另外 11 个运算符,其中 5 个与算术运算符一起使用,6 个与位运算符和位移运算符一起使用。例如,+= 运算符先读取左侧变量的值,再和右侧操作数相加。这种表达式的副作用是把两数之和赋值给左侧变量,返回值也是两数之和。因此,表达式 x+=2 几乎和 x=x+2 一样。这两种表达式之间的区别是,+= 运算符只会计算一次左侧操作数。如果左侧操作数有副作用,这个区别就体现出来了。如下两个表达式并不等效:

a[i++] += 2;

a[i++] = a[i++] + 2;


组合赋值运算符的一般格式为:

var op= value

如果 var 没有副作用)等效于:

var = var op value



可用的组合赋值运算符有:

+=    -=    *=    /=    %=       // 算术运算符加赋值运算符

&=    |=    ^=      // 位运算符加赋值运算符

<<=  >>=  >>>=      // 位移运算符加赋值运算符

其中,最常用的运算符是 += 和 -=,不过处理布尔值标志时,&= 和 |= 也有用。例如:

i += 2;     // 循环计数器增加2

c -= 5;     //计数器减小5

flags |= f;     //在一组整数标志flags中设定f标志

flags &= ~f;     // 在一组整数标志flags中清除f标志

你可能感兴趣的:(第05部分:赋值运算符)