逻辑运算符的“短路”
错误代码:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/925ef351fcf0033f451ea7dfbec89956.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d8edc9cee40aa6ebc8f20f569b7bf160.png)
错误分析:如果s1是s2的子集或者s2是s1的子集,那么index就会自增到s1.length()或者s2.length()。这样在最后一次判断循环条件时便会出现越界访问现象。
正确代码:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/aa5800cebf6ffc906ff26b618f94fb06.png)
这段代码仅仅调换了由&&连接的三个条件的顺序,其原理是利用逻辑运算符的“短路”,即便index自增到s1.length()或s2.length(),一旦前边两个条件运算结果为假,就不再进行s1.charAt(index) == s2.charAt(index),由此避免了越界访问。