java基础篇之7————String常用类及jdk1.8中intern方法
恬毅:
String str3=new String("he")+new String("llo"); 这个最多应该是会创建5个对象,"he","llo"在常量池也会创建两个对象,new String("he")和new String("llo")在堆中创建两个对象,str3指向的是堆中新的对象,一共5个,下面是字节码:
0: new #2 // class java/lang/StringBuilder
3: dup
4: invokespecial #3 // Method java/lang/StringBuilder."":()V
7: new #4 // class java/lang/String
10: dup
11: ldc #5 // String he
13: invokespecial #6 // Method java/lang/String."":(Ljava/lang/String;)V
16: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: new #4 // class java/lang/String
22: dup
23: ldc #8 // String llo
25: invokespecial #6 // Method java/lang/String."":(Ljava/lang/String;)V
28: invoke
|