Java一些小的思想與功能小記(歡迎補充哦)

Java一些小的思想與功能小記(歡迎補充哦)

1.用if+return代替複雜的if...else(if+return)

 public static void test1(String str) {
if ("1".equals(str)) {
System.out.println("輸入的參數是1");
return;
}
if ("2".equals(str)) {
System.out.println("輸入的參數是2");
return;
}
if ("3".equals(str)) {
System.out.println("輸入的參數是3");
return;
}
System.out.println("你輸入的不是123`````````");
// ...這裡可以寫不滿足上述條件的處理
}

2.儘量減少對變量的重複計算(for循環的用法)

明確一個概念,對方法的調用,即使方法中只有一句語句,也是有消耗的,包括創建棧幀、調用方法時保護現場、調用方法完畢時恢復現場等。所以例如下面的操作:

for (int i = 0; i < list.size(); i++)
{...}

建議替換為:

for (int i = 0, int length = list.size(); i < length; i++)
{...}

這樣,在list.size()很大的時候,就減少了很多的消耗

補充:

用第一種方法時進行非空驗證:

for (int i = 0; list!=null && i < list.size(); i++)
{...}

3.循環內不要不斷創建對象引用

例如:

for (int i = 1; i <= count; i++)
{
Object obj = new Object();
}

這種做法會導致內存中有count份Object對象引用存在,count很大的話,就耗費內存了,建議為改為:

Object obj = null;
for (int i = 0; i <= count; i++)
{
obj = new Object();
}

這樣的話,內存中只有一份Object對象引用,每次new Object()的時候,Object對象引用指向不同的Object罷了,但是內存中只有一份,這樣就大大節省了內存空間了。

4、儘量使用HashMap、ArrayList、StringBuilder,除非線程安全需要,否則不推薦使用Hashtable、Vector、StringBuffer,後三者由於使用同步機制而導致了性能開銷

5.字符串變量和字符串常量equals的時候將字符串常量寫在前面

String str = "123";
if (str!=null && "123".equals(str))
{
...
}

這麼做主要是可以避免空指針異常

6.任何數據在使用之前進行非空判斷(包括對象,list)

 List employeeInExams = exam.getEmployeeInExams();
List employeeOutExams = exam.getEmployeeOutExams();
boolean insertEmployeeResult = false;
int in_size, out_size;
in_size = employeeInExams != null ? employeeInExams.size() : 0;
out_size = employeeOutExams != null ? employeeOutExams.size() : 0;
Integer employeeNum = in_size + out_size;

7.if...else...語句用條件運算符

return examMapper.deleteByPrimaryKey(id) > 0 ? true : false;
result = examService.deleteExamById(examId) ? "刪除成功!" : "刪除失敗!";

8.善於使用commons-io包和commons-lang包中的工具類

io包中FilenameUtils和IOUtils和FileUtils的使用

lang包中 StringUtils和NumberUtils的使用等。

9.線程休眠的另一種方法

 try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}


分享到:


相關文章: