城阳网站开发公司,网站建设网上消费算在年费,施工建设集团网站,简单的公司资料网站怎么做2019独角兽企业重金招聘Python工程师标准 ###String 简介 String 并非java的8大基本数据类型之一。 java中基本数据类型存储在栈内存中。而String不是#xff0c;新new的String 对象存储在堆内存中。而字符串存储在常量池中。String对象的引用存储中栈内存中。 … 2019独角兽企业重金招聘Python工程师标准 ###String 简介 String 并非java的8大基本数据类型之一。 java中基本数据类型存储在栈内存中。而String不是新new的String 对象存储在堆内存中。而字符串存储在常量池中。String对象的引用存储中栈内存中。 String的实例化方式 String对象有两种实例化方式 String str1 new String(ABC); //第一种String str2 ABC; //第二种 第一种new的方式javap反编译的结果为 0: ldc #2 // String ABC2: astore_1 3: new #3 // class java/lang/String6: dup 7: invokespecial #4 // Method java/lang/String.init:()V整个过程大致可解释为: a. 常量池中创建常量 ABC;b. 栈内存中创建引用c. 堆内存中新建String对象再初始化。而第二种直接赋值的方式虚拟机运行的结果如下 0: ldc #2 // String ABC2: astore_1 这里可以很清楚的看出直接在常量池中创建‘ABC’字符串指向引用str2 由此可以看出第二种方式明显比第一种更高效。 其实经过测试 String s new String(ABC);//等价于下面两步(唯一的区别就是在栈中多了一个指向ABC的引用s1)String s1 ABC;String s2 new String(s1);转载于:https://my.oschina.net/mercyyang/blog/707565