public static void main(String[] args) {
String a = new String("abc");
String b = "abc";
String c = "abc" + "KDF" + "gh" +"rt" +"jk";
}
請在代碼的下面找到字節碼。在下面的代碼中創建的String對象的總數?
Compiled from "NumOfStringObject.java"
public class com.practise.general.NumOfStringObject extends java.lang.Object{
public com.practise.general.NumOfStringObject();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #2; //class java/lang/String
3: dup
4: ldc #3; //String abc
6: invokespecial #4; //Method java/lang/String."<init>":(Ljava/lang/Strin
g;)V
9: astore_1
10: ldc #3; //String abc
12: astore_2
13: ldc #5; //String abcKDFghrtjk
15: astore_3
16: return
}
我沒有閱讀/理解字節碼的經驗,我猜想總共有3個字符串對象正在創建。
讓我知道你的想法。
是的那裏有3個字符串,你創建 – XtremeBaumer
好的,謝謝,但爲什麼像「KDF」,「gh」,「rt」,「jk」這樣的中間對象沒有存儲在字符串池中。 – Lovesh
@Lovesh我給了你指定的鏈接,這個行爲被定義爲 – xenteros