前車之鑒,后車之師。

各個地方引用過來的前人的經(jīng)驗,持續(xù)不斷更新中。。。
常量類定義(《Effective Java》)

定義私有的構造方法,使其不可被實例化
注:常量接口模式是對接口的不良使用

public class Util {

    private Util() {
    }

    /**
     * 登陸時 手機號未注冊
     */
    public static final String MOBILE_NOT_REGISTER = "手機號未注冊!";

    /**
     * 手機號碼錯誤
     */
    public static final String MOBILE_IS_ERROR = "請?zhí)顚懻_的手機號碼!";

    /**
     * 驗證碼錯誤
     */
    public static final String AUTHCODE_IS_ERROR = "驗證碼錯誤!";

    /**
     * 手機號碼已經(jīng)被注冊
     */
    public static final String MOBILE_IS_REGISTER = "該手機號碼已被注冊!";

    /**
     * ...........................
     */
}
獲取整數(shù)類型的隨機數(shù)

不推薦使用

Math.random();//然后乘以N倍獲取整數(shù)

使用

new Random().nextInt(101);//輸出0~100之間的隨機數(shù),包含0和100
所有相同類型的包裝類對象比較值統(tǒng)一使用equals();

使用

"test" .equals(object);

替換

object.equals("test");

Object的equals方法容易拋空指針異常,應使用常量或確定有值得對象來調用equals
推薦使用java.util.Objects#equals (JDK7引入的工具類)

獲取系統(tǒng)時間

使用:

System.currentTimeMillis();

替換:

new Date().getTime();

以提高性能

for循環(huán)設值

避免每次循環(huán)都會取值跟賦值,以提高性能。

List<String> list = new ArrayList<Stirng>();
for (int i = 0; i < list.size(); i++) {
        // 循環(huán)操作
}

建議改為:

List<String> list = new ArrayList<Stirng>();
for (int i = 0, n = list.size(); i < n; i++) {
        // 循環(huán)操作
}

或者:

List<String> list = new ArrayList<Stirng>();
int n = list.size();
for (int i = 0; i < n; i++) {
        // 循環(huán)操作
}
乘法和除法使用移位操作

用移位操作可以極大地提高性能,因為在計算機底層,對位的操作是最方便、最快的.

例如:

for (itn i = 0,n = 10; i < n ; i++){
    a = a * 8;  
    b = b / 2;
}

建議改為:

for (itn i = 0,n = 10; i < n ; i++){
    a = a << 3;  
    b = b >> 1;
}
  • 左移運算符( << ),num << 1,相當于num乘以2
  • 右移運算符( >> ),num >> 1,相當于num除以2
判斷兩個對象是否equal

使用Objects.equals()方法,可以避免空指針異常

String str1 =  null,str2 = "test"; 
str1.equals(str2);// 空指針異常
Objects.equals(str1,str2);// OK

Objects.equals的實現(xiàn)為

public static boolean equals(Objecta,Objectb){
    return (a == b) || (a != null && a.equals(b));
}
避免創(chuàng)建不必要的對象(《Effective Java》)

一個極端的例子:

String s  =  new String("string"); // Don't do this

該語句每次執(zhí)行的時候都會創(chuàng)建一個新的String實例,但是這寫創(chuàng)建對象的動作全都是不必要的,傳遞個String構造器的參數(shù)(“string”)本身就是一個實例,功能方面等同于構造器創(chuàng)建的所有對象。

改進:

String s  = "string"; // Do this
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容