我期望这个程序给我编译错误,但它编译成功,我运行时得到一个运行时异常。异常而不是编译器错误
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