Java语言基础18-多功能运算符

多功能运算符 page 18 of 37


前面曾经说过 Java(TM) 和 C 一样,是一门语法功能很强的编程语言,它支持一些很酷的多功能运算符,如下表所示:

多功能
运算符
解释
++递增 (加 1)
--递减 (减 1)
+=增加(加指定值)
-=减少(减指定值)
*=乘(乘以指定值)
/=除(除以指定值)
&=位与 (和指定值)
|=位同或(和指定值)
^=位异或(和指定值)
%=整除取余(除以指定值求余数)

这些运算符(实际是运算符的组合)组合了多个运算:表达式求值后赋给变量,从这个意义上说,他们是多功能运算符。例如,x++ 首先取 x 的值,再将值加 1, 然后将结果赋回给 x,并 "取" x 的初始值作为表达式的最终值。与此对比,++x 首先取 x 的值,再将值加 1,然后将结果赋回给 x, 并取 x 的新值作为表达式的最终值。

请注意当x++++x 是独立语句,其唯一的任务就是使变量加一,也就是说可以忽略表达式的最终值时,他们是等价的:


int x = 4;
x++; // same effect as ++x
System.out.println("x = " + x);

这段代码产生如下输出:


x = 5

调用 println()时,参数是字符串 "x = " 和由 x 转换的字符串的连接。字符串运算,包括字符串连接号 + 的使用,都将在 Strings 中讲述。

在下面的上下文中,递增运算符的位置很重要:


int x = 4;
int y = x++;
int z = ++x;
System.out.println( "x = " + x + " y = " + y + " z = " + z);

这段代码产生输出:


x = 6 y = 4 z = 6

下表是一些例子和相应的解释

多功能
运算符
示例通俗的
等价表达式
++x++, ++xx = x + 1
--x--, --xx = x - 1
+=x += yx = x + y
-=x -= yx = x - y
*=x *= yx = x * y
/=x /= yx = x / y
&=x &= yx = x & y
|=x |= yx = x | y
^=x ^= yx = x ^ y
%=x %= yx = x % y

请注意 Java 中,位运算 & |^ 仅能用于整型值,这样才有意义。二进制运算的内容在很多计算机科学的入门文章中都有介绍。

用递减运算符我们可以将 bark() 中的循环操作写得更加简练:


  void bark(int times) {
    while (times > 0) {
      System.out.println(barkSound);
      times--;
    }
  }

还可以进一步精简为:


  void bark(int times) {
    while (times-- > 0)
      System.out.println(barkSound);
  }

此例中,我们将 times 的最终值用在了 while 结构的布尔表达式中来控制循环(使循环继续)。更明白地说,times-- 将变量递减但在大于比较运算之前取初始值用于计算得到表达式的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值