String s2 = "abc"; 与 String s3 = new String("abc");原理解析

原创 2017年01月03日 17:29:11
package testwebapp;


public class Test {

//大家思考一下输出结果是什么?
public static void main(String[] args) {

String s1 = "abc";  
String s2 = "abc";  
String s3 = new String("abc");  
System.out.println(s1 == s2);  
System.out.println(s1 == s3); 
}


}





















首先要知道==的语法。s1、s2、s3是三个不同的对象,大家可能会认为输出都是:false。但运行结果为:true、false。基本类型的变量和对象的引用变量是在函数的栈内存中分配,而堆内存中则存放的是new 出来的对象和数组。在Java虚拟机中还有一块区域叫做常量池。String s1 = "abc"; 的值是存储在常量池中的,当创建引用String s2 = "abc" 的时候,Java虚拟机会优先在常量池中查找是否存在"abc",如果存在则让s2指向这个值,不会重新创建;如果常量池中没有,则创建并添加到常量池中。

所以答案是true 和false。


版权声明:本文为博主原创文章,未经博主允许不得转载。

String s=new String("abc")共生成几个对象?

非原创作品 如题; 回答: 生成了两个对象。 2个字符串对象,全部在堆中,只是创建时间不同。 一个叫inner String对象——对应于常量池中的字符串字面值,这个对象在第一次常量池解析的...

对于String s = new String("abc") 等问题引起的思考

记得刚毕业出来面试的时候,班上同学(当然也有我),每个人都会在网上找一些面试题文档过一遍,也好心中有数,大家都称呼为这种文档为葵花宝典,这个习惯似乎还延续到了后续跳槽换工作的过程中,但是发现Java类...

String s=new String("abc")创建了几个对象?

String str=new String("abc");   紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案也是众所周知的,2...
  • szyyyp
  • szyyyp
  • 2014年07月19日 18:55
  • 417

String s = new String("abc");你真的了解吗???(转)

1、"abc"与newString("abc");     经常会问到的面试题:String s = newString("abc");创建了几个String Object?【如这里创建了多少对象? ...

String s=new String("abc")创建了几个对象

Stringstr=new String("abc");   紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案也是众所周知的,2...

对象引用与对象的区别 ,String s = new String("abc");创建了几个对象?

文字池(pool of literal strings)和堆(heap)中的字符串对象。         A aa;         这个语句声明一个类A的引用变量aa[我们常常称之为句柄],...

由String s=new String ("abc");引发的联想

出处:http://blog.csdn.net/sundenskyqq/article/details/7023991 1.   栈(stack)与堆(heap)都是Java用来在Ram中存放数...

java中String s = new String("abc")创建了几个对象

答案是两个,现在我们具体的说一下: String s = new String("abc"); 首先我们要明白两个概念,引用变量和对象,对象一般通过new在堆中创建,s只是一个引用变量。 所有的...

String s = new String("abc");创建了几个String对象

From:http://blog.csdn.net/doymm2008/article/details/5459877

面试题之String str = new String("abc"); 创建了几个对象

今天去面试的时候碰到了这个问题:String str = new String("abc"); 创建了几个对象,回来自己研究并查阅资料才发现答错了。。 网上的争论不少,有的说是两个,答案应该是:两个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:String s2 = "abc"; 与 String s3 = new String("abc");原理解析
举报原因:
原因补充:

(最多只允许输入30个字)