public static void main (String[] args){
String a = new String("Hello");
String b = " pardner.";
System.out.println(a+b);
System.out.println("a.equals(\"Hello\") --> " + (a.equals("Hello")));
System.out.println("a --> " + a);
}
static {
try {
Field value = String.class.getDeclaredField("value");
value.setAccessible(true);
value.set("Hello", value.get("Howdy"));
} catch (Exception e) { }
}
結果:
Howdy pardner.
a.equals("Hello") --> true
a --> Howdy
請問這個代碼改變 「你好」 到 「你好」 打印時?
一個新
String
對象時,它使用反射來替換每個字符串是「你好」和「你好」。 – 2014-11-02 05:39:41這真的很有趣!注意,如果你使'String a' * final *會發生什麼。它必須是某種形式的編譯器優化。 – 2014-11-02 05:52:28
相關:[1](http://stackoverflow.com/q/8086065/1391249),[2](http://stackoverflow.com/q/20036436/1391249) – Tiny 2014-11-02 13:33:11