i++和++i的区别?
public static void main(String[] args) {
int i = 1;
int j = 1;
int a = i++;
int b = ++j;
System.out.println("a:"+a+","+"b:"+b);//a:1,b:2
System.out.println("i:"+i+","+"j:"+j);//i:2,j:2
}
从上Demo可得知i++是赋值以后才将自身累加,而++i是自身累加以后再赋值
下面开始讨论实际情况
例如:for(int i = 0;i < 10;i++){}
写多代码的都清楚,上面的i++其实就是在for执行完一次程序后再执行i++,逻辑上等同(如下)
int arr[] = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0;i <10;) { //程序正常
System.out.print(arr[a]+" ");
...
i++;//i++为最后一行代码
}
此时无论是i++还是++i效果都一样,那当我把i++或++i放到第一行代码的时候又有什么变化?
int arr[] = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0;i <10;) { //数组越界异常
i++;//i++为第一行代码
System.out.print(arr[a]+" ");
...
}
很显然,放到第一行的时候i的值就从1开始了啊,毕竟一开始就累加了,如果此时循环输出一个容量为10的数组,那么必然会抛出数组越界异常。
那么我写成这样的时候,i++和++i就有区别了,i++时程序正常没bug,++i时就会数组越界异常,结合其性质相信大家都搞明白了,如下:
int arr[] = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0;i <10;) {
System.out.print(arr[i++]+" ");
}
或
int arr[] = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0;i <10;) {
int a = i++;
System.out.print(arr[a]+" ");
}
告辞~