不一样;
一般情况下,二者不会有什么差别,结果都是i-1之后的值复制给了i。但是如果在一个特殊的语句中,两个表达式就不见得完全相同了。
例如:
也不是完全一样。
比如说上述两个代码各占一行或者谓语for循环中,那么不会有什么差别,结果都是i-1之后的值复制给了i。但是如果在一个相对复杂的语句中,两个表达式就不见得完全相同了。
i--是先用再减,i=i-1不管你怎么用肯定是先执行i-1肯定是先减了1的。
如上述例子,就说明了二者的不同。
部分情况可以,不过有些情况不能够完全替代。
如果单独两句
i--;和 i=i-1; 是完全一样的。
但是i--如果在 其他java语句中 如 a = i--; 则就是代表 a=i; i--; 这样两句话了。
一般情况下i=i-1,基本上可以被i--替换。 但是i--,在部分语句中要被i--替换,就可能需要更多的改动了,就像刚才的例子。
i=i-1是一个赋值表达式,而i--你可以看做一个函数
public int add(int i){
int temp=i;
i=i-1;
return temp;
}
可以看出,如果是论i的的改变的话,没有他们的效果是一样的(这里不要纠结值传递和引用传递)
不一样,i--,执行时值还是i,执行完才回变成小1的值,
i=i-1执行时i的值直接就变了