1. 程式人生 > >【原】個人java專案經驗總結

【原】個人java專案經驗總結

寫在前面的話

-“雖然我之前沒做過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.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());