Cookie cookie = new Cookie("lastTime", System.currentTimeMillis() + "");
疑問:為什麼要在 System.currentTimeMillis() 後拼接空字符串 + ""?
System.currentTimeMillis() 返回 long 類型(毫秒級時間戳)。Cookie(String name, String value) 構造器要求 value 參數為 String 類型。String.valueOf() 將其轉為字符串。| 寫法 | 原理 | 推薦程度 |
|---|---|---|
time + "" | 字符串拼接觸發隱式轉換 | ⭐⭐⭐ 簡潔、慣用 |
String.valueOf(time) | 顯式調用標準庫方法 | ⭐⭐⭐⭐⭐ 最清晰、性能最優 |
Long.toString(time) | Long 包裝類靜態方法 | ⭐⭐⭐⭐ 專用於 long,語義明確 |
"" + time | 同 `time + ""`,順序不同 | ⭐⭐ 可讀性稍差 |
time + "" 編譯後實際調用 StringBuilder.append(long).toString()(Java 9+ 優化為 StringConcatFactory),本質上仍是創建中間對象。String.valueOf() 直接調用 Long.toString(),避免了 StringBuilder 開銷,極微量更高效。
String.valueOf():語義明確、無歧義、性能最優。// 設置
cookie.setValue(String.valueOf(System.currentTimeMillis()));
// 讀取
long lastTime = Long.parseLong(cookie.getValue());
掌握基本類型與字符串互轉的多種方式,能寫出更專業、高效的 Java 代碼。