【原】個人java專案經驗總結
阿新 • • 發佈:2019-01-23
寫在前面的話
-“雖然我之前沒做過xxx,不過用xxx應該很簡單。”
-“沒做過就別說很簡單!”
目錄
一、運算子,基本型別和四則運算
1.1 負數的餘數,如何優雅地避免陣列下標越界
1.2 你確定你的if判斷式裡是'=='而不是=?
二、類,介面的設計
2.1 引數列表的設計
2.2 類的分類
2.3 用return進行邏輯控制
2.4 靈活地重寫某GUI的Action類,用匿名內部類
三、檔案,輸入輸出
3.1 (zz)檔案編碼,java讀寫檔案時的編碼
四、IDE相關
4.1 IDEA中某變數為灰色(Dark主題下)不等價於該變數沒有用
------------------------------------------------
1. 基本型別和四則運算
1.1 負數的餘數,如何優雅地避免陣列下標越界
-1%3=?
有兩種答案:-1和2
java中用的是第一種,為了避免出現-1,丟擲ArrayIndexOut的Error,所以獲取陣列上一個元素應該這麼寫,
<T> elementBefore(int x)
{
return array[ (array.length + x - 1) % array.length ];
}
避免了使用if語句判讀是否越界,優雅。
1.2 你確定你的if判斷式裡是'=='而不是=?
二、類,介面的設計
2.1 引數列表的設計
3個以上同類型變數用陣列傳參,配合int引數指定陣列中各個變數的功能
2.2 類的分類
UI類的焦點控制類應該和UI類放在同一目錄下,而不是和呼叫該UI的類放在同一目錄
2.3 用return進行邏輯控制
尤其是actionListenner中實現多種邏輯時,新增一個跳出邏輯只需要加入if (...) {return;}即可不執行之後的程式碼,優雅。
2.4 靈活地重寫某GUI的Action類,用匿名內部類
需求描述:有一個new JButton(new ThisAction(arg1,arg2)),現在需要僅在當前類中修改ThisAction的事件監聽邏輯。
new JButton( new ImagePreviewAction(DeviceCurveDialog.this,previewContext) { @Override public void actionPerformed(ActionEvent event) { if (isNameEmpty()) { return; } super.actionPerformed(event); } } )
三、檔案,輸入輸出
3.1 (zz)檔案編碼,java讀寫檔案時的編碼
原文 http://blog.sina.com.cn/s/blog_43eb83b90102dvj6.htmlJava程式碼
File f = new File("E:\\eclipse\\workspace\\box\\Data\\2003-3-7-100.inc");
InputStreamReader read = new InputStreamReader (new FileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null)
{ System.out.println(line); }
File f = new File("E:\\eclipse\\workspace\\box\\Data\\2003-3-7-100.inc");
InputStreamReader read = new InputStreamReader (new FileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);String line; while ((line = reader.readLine()) != null)
{System.out.println(line);
}
通過開啟檔案是指定檔案編碼的方法把這個問題輕鬆的解決了。
最後總結一下:java要讀取資料流的時候一定要指定資料流的編碼方式(至少讀取String流的時候要這麼作。
2.寫檔案
File file = new File("c:\a.test");
Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
writer.write("中文測試");
writer.close();
四、IDE相關
4.1 IDEA中某變數為灰色(Dark主題下)不等價於該變數沒有用
一般這個時候你用crtl+滑鼠左鍵點選該變數發現沒有導航。不要以為這個變數在程式裡就沒用到了。有一種情況是,該變數初始化後沒被呼叫。但是在初始化的時候,該變數已經和某些邏輯綁定了。
比如說:
private JButton defaultNameButton;
...
defaultNameButton = button(cc.xy(3, 1), createDefaultNameAction());