我期望這個程序給我編譯錯誤,但它編譯成功,我運行時得到一個運行時異常。異常而不是編譯器錯誤
class substr11
{
public static void main(String args[])
{
String s = "abcde";
System.out.println(s.substring(1,-1));
}
}
編譯器錯誤應該能夠解析(字符串在人體自身初始化),並發現這串操作會導致編譯錯誤吧? 有人可以告訴我爲什麼它沒有拋出編譯錯誤?
異常在線程 「主」 java.lang.StringIndexOutOfBoundsException:字符串IND 前超出範圍:-2 在java.lang.String.substring(未知來源) 在substr11.main(substr11.java:9 )
爲什麼使用-1? – Gerret
因爲編譯器不是一個全面的靜態分析工具? –
@OliCharlesworth我只想知道它是否有意義。我可能會錯誤地理解他的問題,我認爲他可以使用-1來引導外線 – Gerret