什么是< length()和< = length() - 1?

时间:2016-02-01 13:20:47

标签: java

'String s=" ";'//java developer 
 for(int i=0;i<=arg0.length()-1;i++)//it's subtracts 

即length()= 10-1 = 9。否则它的索引从0开始?   希望你们这些人

3 个答案:

答案 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()

简而言之,没有任何意义,这是不必要的并发症,只是浪费了某人试图阅读它的时间,实际上没有任何意义。