'String s=" ";'//java developer
for(int i=0;i<=arg0.length()-1;i++)//it's subtracts
即length()= 10-1 = 9。否则它的索引从0开始? 希望你们这些人
答案 0 :(得分:2)
表面上没什么。但要小心:
我从不使用<= length() - 1
,因为如果length()
为零,可以导致问题。这些问题出现在具有 unsigned 类型的语言中,且length()
的类型未签名:length() - 1
可以换行为你的循环带来灾难性后果的最大可能值。在Java中,即使遇到一个将length()作为char
(这是Java中唯一的无符号类型)返回的对象,您也不会遇到此问题,因为后续-1将强制进行类型提升。请放心,String#length
会返回int
。
答案 1 :(得分:0)
他们都这样做。
假设您有一个包含10个元素的数组。 现在你像这样循环:
for(int i = 0; i < array.length;++i) {}
循环将从0到9,因为直到10,每个数字都小于数组本身的长度。
其他循环方式也是如此:
for(int i = 0; i <= array.length -1; ++i) {}
此循环也将从0到9,因为直到10,每个数字都小于或等于数组-1的长度。
所以是的,没有区别,尽管减去1将花费时间,这可以忽略不计。
答案 2 :(得分:0)
最困难的事情是找不到的东西。
在这种情况下,使表达式更复杂是没有意义的。最初的开发人员很可能写了<= length()
并发现这个太多,所以他们用<= length()-1
修复它,而没有考虑使用< length()
更简单和更惯用的事实1} p>
简而言之,没有任何意义,这是不必要的并发症,只是浪费了某人试图阅读它的时间,实际上没有任何意义。