寫在前面的話
-“雖然我之前沒做過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,是以擷取數組上一個元素應該這麼寫,
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.html
Java代碼
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());