大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: 递 增、递减运算

递增、递减与指定运算符,老实说常成为初学者的一个恶梦,因为有些程序中若写得精简,这几个运算符容易让初学者搞不清楚程序的真正运算结果是什么;事实 上,使用这几种运算符的目的除了使让程序看来比较简洁之外,还可以稍微增加一些程序执行的效率。

在程序中对变量递增1或递减1是很常见的运算,例如:
int i = 0;
i = i + 1;
System.out.println(i);
i = i - 1;
System.out.println(i);

这段程序会分别显示出1与0两个数,您可以这么写这个程序:
int i = 0;
System.out.println(++i);
System.out.println(--i);

其中写在变量 i 之前的++--就是“递 增运算符”(Increment operator)“递减运算符”(Decrement operator),当它们撰写在变量之前时,其作用就相当于将变量递增1与递减1:
++i;    // i = i + 1;
--i;      // i = i - 1;

您可以将递增或递减运算符撰写在变量之前或变量之后,但其实两者是有差别的,将递增(递减)运算符撰写在变量前时,表示先将变量的值加(减)1,然后再传 回变量的值,将递增(递减)运算符撰写在变量之后,表示先传回变量值,然后再对变量加(减)1,例如:
int i = 0;
int number = 0;
number = ++i;   // 相当于i = i + 1; number = i;
System.out.println(number);
number = --i;    // 相当于i = i - 1; number = i;
System.out.println(number);

在这段程序中,number的值会前后分别显示为1与0,再看看下面这段:
int i = 0;
int number = 0;
number = i++;    // 相当于number = i; i = i + 1;
System.out.println(number);
number = i--;     // 相当于 number = i; i = i - 1;
System.out.println(number);

在这段程序中,number的值会显示前后分别为0与1。

接下来看“指定运算符”(Assignment operator), 到目前为止只看过一个指定运算符,也就是(=)这个运算符,事实上指定运算符还有以下的几个:

运 算子 范 例 结 果
+= a += b a = a + b
-= a -= b a = a - b
*= a *= b a = a * b
/= a /= b a = a / b
%= a %= b a = a % b
&= a &= b a = a & b
|= a |= b a = a | b
^= a ^= b a = a ^ b
<<= a <<= b a = a << b
>>= a >>= b a = a >> b

每个指定运算符的作用如上所示,但老实说若不是常写程序的老手,当遇到这些指定运算符时,有时可能会楞一下,因为不常用的话,这些语法并不是那么的直觉。

使用++、--或指定运算符,由于程序可以直接在变量的内存空间中运算,而不用取出变量值、运算再将数值存回变量的内存空间,所以可以增加运算的效 率,但以现在电脑的运算速度来看,这一点的效率可能有些微不足道,除非您这类的运算相当的频繁,否则是看不出这点效率所带来的改善,就现在程序撰写的规模 来看,程序的易懂易读有时反而是重点,可以的话尽量将程序写的详细一些会比较好,千万不要为了卖弄语法而滥用这些运算符。