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つのStringオブジェクトの合計が作成なっていると思い、読み/理解バイトコードでの経験がありません。
あなたの考えを教えてください。
あなたが作成する文字列 – XtremeBaumer
ありがとうしかし、なぜ "KDF"、 "gh"、 "rt"、 "jk"のような中間オブジェクトが文字列プールに格納されていないのですか? – Lovesh
@Loveshこの動作が定義されている仕様へのリンクを教えました – xenteros