2017-06-29 2 views
-1

Ce code ...Les limites des index de chaîne en java

public String a() { 
String x = "abc"; 
String y = x.substring(3,3); 
return y; //returns : "" 
} 

Works sans erreurs, mais je pensais qu'il n'y a pas de 3ème index pour que string.As je comprends les indices de chaînes comme 1er CHAR index 0, 2 char 1 index, ça va comme ça. Alors pourquoi est-ce que ça ne me donne pas une erreur comme "OutOfBoundsException"?

Répondre

0

Jetez un oeil sur le code, et vous verrez qu'il ne répond pas à l'exigence d'une exception

public String substring(int beginIndex, int endIndex) { 
    if (beginIndex < 0) { 
     throw new StringIndexOutOfBoundsException(beginIndex); 
    } 
    if (endIndex > value.length) { 
     throw new StringIndexOutOfBoundsException(endIndex); 
    } 
    int subLen = endIndex - beginIndex; 
    if (subLen < 0) { 
     throw new StringIndexOutOfBoundsException(subLen); 
    } 
    return ((beginIndex == 0) && (endIndex == value.length)) ? this 
      : new String(value, beginIndex, subLen); 
} 
0

De la documentation:

IndexOutOfBoundsException - si le beginIndex est négatif, ou endIndex est plus grande que la longueur de cet objet String ou beginIndex est plus grand que endIndex.

Aucune de ces conditions n'a été remplie.