i++和++i的区别(详细)?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QQB67G8COM/article/details/89298149

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循环体内使用最多就是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]+" ");
}

告辞~

猜你喜欢

转载自blog.csdn.net/QQB67G8COM/article/details/89298149