是什麼
System.out.println("hello world");
System.out.println("hello world");
和
String s="hello world";
System.out.println(s);
System.out.println(s);
之間的區別
哪個更好?
是什麼
System.out.println("hello world");
System.out.println("hello world");
和
String s="hello world";
System.out.println(s);
System.out.println(s);
之間的區別
哪個更好?
代碼質量明智的最好定義重複串常量:
public static final String HELLO_WORLD = "hello world";
至於內存 - 沒有區別。
無,它們編譯成幾乎相同的字節碼(唯一的區別是可變參考)。沒有內存差異(變量引用除外)。
在此特定情況下,它們都是相同的。常量字符串是由VM編輯的intern,以便它們都指向相同的String
對象。
一般而言,一旦串計算,最好將其分配給一個字段/變量和重用。 (我想這一般適用於 - 重用計算結果時沒有變化,而不是重複計算。)
對於字符串常量,我通常將它們移動到靜態常量領域。沒有性能增益,但它避免了在代碼中具有「魔法值」。同樣,理想情況下,UI消息應移出代碼並放入properties bundles。
在我的腦海裏,Java編譯器將優化的代碼,不會有兩個解決方案之間的任何差別。
中的javac的代碼優化做的gcc不值得的優化,但它應該是足夠高效地爲這樣的事情。 您可能會考慮Java中的「不斷摺疊」優化(但我不確定)。 你也可以看看this article。
已標記爲可能引起注意的模特襪子傀儡 – 2010-07-29 10:12:40