问题的源头是在遍历输出的时候不小心给自增操作前加了个赋值,然后发现打印出来的数据和源数据一样,并且数组中的数据也没有改变,查不到到底怎么解决,后来在浏览别人帖子的时候,突然灵光一闪,想起了运算符优先级,一解释,果然通了。
nums[i] = nums[i]++;
实际上首先是赋值号右侧的自增符号先运算,即
nums[i] = nums[i]+1;//此时nums[i]的元素值自增了1
但是我们都知道i++这个操作虽然是自增,但是留在运算里的值依旧时原值,于是换算到这里就成了
nums[i] = nums[i]的原值 -->这一步操作是在nums[i]自增之后的操作,所以,
nums[i]=nums[i]++;是nums[i]首先自增了1,然后又通过赋值操作给自己赋了个原值,所以自然就没有改变了。
public static void main(String[] args){