自动增递和递减
和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++中一些很困难而又没必要的东西,成为了一种更精简的语言。