今天在寫程序的過程中,發現了幾個問題,也重新熟悉了幾個jav的類。
收獲1:
在使用PReparedStatement類的時候。我需要給它set一個時間類型的變量。保存年月日。一直沒有意識到這個問題。我只知道PreparedStatement中的setDate(index.java.sql.Date),方法可以處理。只知道java.sql.Date是java.util.Date的一個子類。保存數據庫中一直是yyyy-MM-dd格式的日期。一直沒太注重?,F在想保存年月日時分秒了。才想到處理它。
但是我怎么設置都是年月日。后來看看了jdk的源碼,才知道這個date類只能保存年月日。又發現了一個setTime(index,java.sql.Time)類,興奮了。這次可以了吧。但是還不行。結果只有;時分秒,而沒有年月日??丛创a才知道他也是java。Util.Date的一個子類。只保存時分秒。
我郁悶了。難道沒有一個保存完整日期的么。再看發現了一個。setTimestamp(index, java.sql.Timestamp),哦,這個java.sql.Timestamp應該可以的。不錯。他果然支持。這次也順便看了一眼java.sql.Timestamp類的源碼。不錯。今天熟悉了一下這幾個類。
收獲2:
今天在寫一個循環處理中發現了一個重大的習慣性錯誤:
代碼如下:
for (int j = 0; j < itemList.size(); j++) {
ItemLoginForm item = (ItemLoginForm) itemList.get(j);
String name=form.getForm_id()+"_"+item.getItem_code();
if(request.getParameter(name)!=null)
item.setItem_value(request.getParameter(name));
else
itemList.remove(j); //這里應該是itemList.remove(j--);
}
想法很簡單,就是想過濾一下集合。不滿足條件的remove掉。但在測試中發現問題。某些元素不參加判定。郁悶了??戳撕镁貌虐l現原來。List集合在對他的元素進行處理的時候。執行remove操作。Size會自動減減。所有的元素前移。而變量j的值沒有變,這樣就錯過了下一個元素。確實很難發現。假如移除某個元素的時候,是j--,這樣才能從下一個元素順次進行。
這個錯誤使我也清楚地熟悉了許多細節的東西應該好好的理解,減少這種bug的發生。
新聞熱點
疑難解答