首页 新闻 会员 周边 捐助

java异常,为什么i++当i=3时已经报错,但是i还会自加!大家帮忙看看

0
[已解决问题] 解决于 2016-10-27 12:34

public static void main(String args[]) {

int i = 0;
String greetings[] = { " Hello world !", " Hello World !! ",
" HELLO WORLD !!!" };
while (i < 4) {
try {
System.out.println(greetings[i++]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组下标越界异常");
} finally {
System.out.println(i);
}
}
}

输出结果为:

Hello world !
1
Hello World !!
2
HELLO WORLD !!!
3
数组下标越界异常
4

取经的曲的主页 取经的曲 | 菜鸟二级 | 园豆:218
提问于:2016-10-27 12:00
< >
分享
最佳答案
1

因为是greetings[(i++)]这样能理解了不

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2016-10-27 12:10

不能,报错按理说,直接System.out.print()这个都是不能打印的,为什么i会加!

取经的曲 | 园豆:218 (菜鸟二级) | 2016-10-27 12:29

@取经的曲: 

System.out.println(greetings[i++]);  这个语句可以分为

1.(i++) 2. (greetings[i++]) 3.System.out.println(greetings[i++]); 

1.会正常执行并返回值.这时i已经++了

2.的时候会抛异常.所以2-3都不会执行.

你的知识点缺失在于:表达式

没有表达式这个概念.花点时间理清下什么叫:表达式.就好了

吴瑞祥 | 园豆:29449 (高人七级) | 2016-10-27 12:31

@吴瑞祥: 搜噶,我好想懂了!谢谢啦  我好好看看表达式去,非常感谢!

取经的曲 | 园豆:218 (菜鸟二级) | 2016-10-27 12:33

@吴瑞祥: 我还有一点点小问题,第一步既然i已经是i++了  那么也就是说i已经自加了,那么为什么第二步还是用的i自加之前的值!

取经的曲 | 园豆:218 (菜鸟二级) | 2016-10-27 13:29

@取经的曲: 这个是++运算符的事情.

i++这个表达式的值还是i.先返回i的值后.i再+=1.

如果是++i就是先i+=1.再返回i的值

吴瑞祥 | 园豆:29449 (高人七级) | 2016-10-27 13:37

@吴瑞祥: i++的原理我懂得,就是没理解这个,如果像你说的,那就不存在先算第一步了,那应该是先算第二步,再算第一步了。

取经的曲 | 园豆:218 (菜鸟二级) | 2016-10-27 13:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册