当我为一个会计应用程序编写代码时,我观察到了 Java 中 List 的异常行为。执行以下代码后,
List<String> accountsList = new ArrayList<String>();
for(int i=0; i< (Integer.MAX_VALUE+2) ;i++){
accountsList.add("Account #"+i);
}
System.out.println("# of accounts in list : "+accountsList.size());
输出为 - # of accounts in list : 0
,这非常有趣。代码也可以正确运行而不会引发任何异常。如果这是因为 int 的值溢出,为什么 java 没有抛出警告/异常。
然后我修改了for循环中的条件, for(int i=0; i< Integer.MAX_VALUE ;i++)
代码按预期工作。
这种行为是否与 int 的 Max 值有关,因为 ArrayList 可以保存值直到 Integer.MAX_VALUE 的计数(accountsList.size() 返回 int 类型的值,并且 int 定义了最大值)。