自动递增和递减
和C类似,Java提供了大量的快捷运算。这些快捷运算使编码更方便,同时也使得代码更容易阅读,但是有时可能使代码阅读起来更困难。
递增和递减运算是两种相当不错的快捷运算(常称为“自动递增”和“自动递减”运算)。其中,递减操作符是“–”,意为“减少一个单位”;递增操作符是“++”,意为“增加一个单位”。举例来说,假设a是一个int(整数)值,则表达式++a就等价于(a=a+1)。递增和递减操作符不仅改变了变量,并且以变量的值作为生成的结果。
这两个操作符各有两种使用方式,通常称为“前缀式”和“后缀式”。“前缀递增”表示“++”操作符位于变量或表达式的前面;而“后缀递增”表示“++”操作符位于变量或表达式的后面。类似地,“前缀递减”意味着“–”操作符位于变量或表达式地前面;而“后缀递减”意味着“–”操作符位于变量或表达式地后面。对于前缀递增和前缀递减(如++a或–a),会先执行运算,在生成值。而对于后缀递增和后缀递减(如a++或a–),会先生成值,在执行运算。下面是一个例子:
//:operators/AutoInc.java
//Demonstrates the ++ and -- operators
import static net.mindview.util.Print.*;
public class AutoInc {
public static void main(String[] args) {
int i = 1;
print("i : "+i);
print("++i:"+ ++i);//Pre-increment
print("i++:"+ i++);//Post-increment
print("i:"+i);
print("--i:"+ --i);//Pre-decrement
print("i--:"+ i--);//post-decrement
print("i:"+i);
}
}/*Output:
i:1
++i:2
i++:2
i:3
--i:2
i--:2
i:1
*///:~
从中可以看到,对于前缀形式,我们在执行完运算后才能得到值,但对于后缀形式,则是运算执行之前就得到值,他们是除那些涉及赋值地操作符以外,唯一具有副作用地操作符。也就是说,它们会改变操作数,而不仅仅是使用自己的值。
递增操作符正是对C++这个名字的一中解释,暗示这“超越C一步”。在早期的一次有关Java的演讲中,Bill Joy(Java创始人之一)声称“Java=C+±-”意味着Java已去除看C++中一些很困难而又没有必要的东西,成为了一种更精简的语言。