java这段代码为什么报这个错误?

我虽然没有&&,(我测试过写&&程序就没问题),可是我看不出来为什么系统报出来下标越界这个错误?

首先你得明白什么是与和短路与。
短路与是判断第一个为false时,第二个就不会判断。
与是两个必须都进行判断。
在你程序运行过程中,变量j在--时变成了-1,这时代入while循环中,就会出现数组下标越界异常。因为不可能是a[-1].
这个问题你以后可以下断点调试。
望采纳
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-20
这两者都是表示逻辑与,只有当两边都是true时,返回true,只要有一个false则结果返回false。

&&还具有短路的功能,即如果第一个表达式为 false,则不再计算第二个表达式,例如,对于 if(str != null
&& !str.equals(“”))表达式,当 str 为 null 时,后面的表达式不会执行,所以不会出现 NullPointerException
如果将&&改为&,则会抛出 NullPointerException 异常。 If(x==33 & ++y>0) y 会增长, If(x==33 && ++y>0)
————————————————
版权声明:本文为CSDN博主「江楼月lbc」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014683368/article/details/81124138
相似回答