雖然我正在爲會計應用程序編寫代碼,但我觀察到java在List中的異常行爲。執行以下代碼後,For循環在java中的異常行爲
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的最大值做任何事情,因爲ArrayList可以保存值直到Integer.MAX_VALUE(accountsList.size()返回int類型的值,並且int具有最大值定義的值)。
有個原因叫做MAX_VALUE。 –
'(Integer.MAX_VALUE + 2)==(Integer.MIN_VALUE + 1)'由於整數溢出...沒有什麼不尋常的結果。 – haraldK
http://stackoverflow.com/questions/9397475/why-integer-max-value-1-integer-min-value – kosa