2017-06-29 3 views
-1

Dieser Code ...Grenzen der String-Indizes in java

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

Arbeiten ohne Fehler, aber ich dachte, dass es für diese string.As kein dritter Index i Indizes von Zeichenketten wie 1. Zeichen verstehen 0-Index, 2. Char 1 Index, es geht so. Dann warum gibt mir das nicht einen Fehler wie "OutOfBoundsException"?

Antwort

0

Werfen Sie einen Blick auf den Code, und Sie werden sehen, dass es nicht die Voraussetzung für eine Ausnahme erfüllt

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

Aus der Dokumentation:

IndexOutOfBoundsException - wenn die beginIndex- negativ ist, oder endIndex größer ist als die Länge dieses String-Objekt oder beginIndex- ist größer als endIndex.

Keine dieser Bedingungen wurde erfüllt.

Verwandte Themen