-3

如果我们在这里阅读 add 函数的 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 上运行。

4

3 回答 3

7

您的 for 循环永远不会进入,因为 1000000 > city.size() (即 2)。

您的代码完全错误。

于 2013-07-31T11:25:34.340 回答
0

如果 i 值从 10000000 开始,并且与 2 (cities.size()) 进行比较,它永远不会更小。

于 2013-07-31T11:28:09.893 回答
0

3件事:

  1. 您的循环从i= 10000000and开始cities.size()= 2,因此i<2永远不会满足条件并且永远不会进入循环。

  2. try{ }catch (Exception e) { e.printStackTrace(); }

永远不要这样做。尝试捕获特定的异常并利用它们!e.printStackTrace()基本上只是将您的异常转储到输出流上并且丢失了。

3. System.out.println(cities);

这将使用 ArrayList 的默认toString()实现。在这种情况下,它将是[Atlanta, Boston]

于 2013-07-31T11:41:49.233 回答