PSD:\code\javaSE\target\classes\demo>javap-c.\Main.classCompiledfrom"Main.java"publicclassdemo.Main{publicdemo.Main();Code:0:aload_01:invokespecial#1//Methodjava/lang/Object."<init>":()V4:returnpublicstaticvoid
比如:String info="hello world"; - 如果不是用双引号声明的String对象,可以使用String提供的intern()方法。 本章亮点:new String("a") 到底创建了几个对象 Stringa=newString("a"); 对应字节码 0 new #2 <java/lang/String> 3 dup 4 ldc #3 6invokespecial#4 <java/lang/String.<init> : (Ljava...
publicclasscom.justin.java.lang.InternTest{ publiccom.justin.java.lang.InternTest();Code:: aload_0 1: invokespecial #1// Method java/lang/Object."<init>":()V4:returnpublicstaticvoidmain(java.lang.String[]);Code::new #2// class java/lang/StringBuilder3: dup 4: invokespecial #3...
public String toString(){ return "Son"+id+name; } public static void main(String[] args) { Son s = new Son(); System.out.println(s); Father f = new Father(); System.out.println(f); } } class Father{ int id=1; String name="zhangsan"; public String toString(){ return "father...
在Java 中方法区与常量池一节中有讲到常量池的分类,以及三种常量池之间的关联,其中有提到 String 类中的intern() 方法,可以在运行期间将Class 文件常量池中未出现的常量放入到运行时常量池,以及将字符串对象的引用加入到全局字符串常量池中。 本章节接着上节对 String 源码的学习,对 String 类中的 intern() 方...
StringBuilder."<init>":(Ljava/lang/String;)V4019: ldc #16;//String 1 ---和上一个循环的区别也仅仅在于这里是从常量池加载1,4121: invokevirtual #29;//Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;4224: invokevirtual #33;//Method java/lang/StringBuilder....
String str1= "str01"; String str2=newString("str")+newString("01"); str2.intern(); System.out.println(str2== str1);//#8} } 为了方便描述,对上述代码的输出结果中由#1~#8进行了编码,下文中蓝色字体部分即为结果。 回到顶部 二、字符串深入分析 ...
2 init的结构: 在看结果之前,先看个例子: public class Test { public static void main(String[] args) { new X();//XYYX } } class X extends Y{ { System.out.print("Y"); } X(){ System.out.print("X"); } } class Y{ {
我们分别打开String 、StringBuilder和System类的源码看看有啥发现, 其中在System类里发现 根据注释可以看出来,System是由虚拟机自动调用的。 在initializeSystemClass 方法中发现调用了Version对象的init静态方法 而Version类里 laucher_name是私有静态字符串常量
现在我们看下String s1 = new String("1") + new String("a");的字节码: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 0: new #2 // class java/lang/StringBuilder 3: dup 4: invokespecial #3 // Method java/lang/StringBuilder."<init>":()V 7: new #4 // class java/lang/String...