如果我们读取add function here的ArrayList文档,显然在无效索引处添加元素会抛出IndexOutOfBoundsException。但是为什么以下代码不会抛出任何异常?
public static void main(String args[]){
List cities = new ArrayList();
cities.add("Atlanta");
cities.add("Boston");
try {
for (int i = 10000000; i < cities.size(); i++){
try {
cities.add(i, "+");
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
System.out.println(cities.size());
}
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
System.out.println(cities);
}
输出:
[Atlanta, Boston]
Process finished with exit code 0
我目前正在使用jdk 7并运行intellij idea。
答案 0 :(得分:7)
永远不会输入您的for循环,因为1000000&gt; cities.size()(即2)。
您的代码完全错误。
答案 1 :(得分:0)
如果i值以10000000开头,并且您与2(cities.size())进行比较,那么它将永远不会更小。
答案 2 :(得分:0)
3件事:
您的循环从i= 10000000
和cities.size()= 2
开始,因此永远不会满足条件i<2
并且永远不会输入循环。
try{
}catch (Exception e) {
e.printStackTrace();
}
永远不要这样做。尝试捕获特定的例外情况并利用它们! e.printStackTrace()
基本上只是将您的异常转储到输出流上并丢失。
3。 的System.out.println(市);
这将使用ArrayList的默认toString()
实现。在这种情况下,它将是[Atlanta, Boston]