在Java运算中,存在一些关系到顺序的计算,这些计算顺序在C / C++语言中是不确定的,并且最后的结果值也没有保证。不过,Java经过编译之后,生成的是与平台无关的字节码,并且交互对象为Java虚拟机,与底层的硬件环境无关。因此,这些运算结果在Java中是确定的。
从左向右的计算顺序
与C / C++不同的是,在Java中,表达式的计算与结果是确定的。不受硬件环境的影响。例如,一个在C / C++中比较常见例子:
int i = 5;
int j = (i++) + (i++) + (i++);
在C / C++中,变量i与j的值是不确定的,根据不同的开发环境,结果也不相同。例如,在Turbo C中,i的值为8,j的值为15,而在VC中,i的值为8,j的值为18。在Java中,i和j的值是确定的,i为8,j为18。
在Java中,操作数的计算顺序是从左向右的也就是首先会计算左侧的操作数,然后再计算其右侧的操作数。例如:
int a = 3;
int b = a + (++a) + (a = 1) + a;
执行这两个语句之后,a的值为1,b的值为9。因为Java就是从左向右进行计算的,故最后(即最右侧)一条修改a值的表达式为:
a = 1
而第2条语句也就是&#x