您的位置:首页 > 编程语言 > Java开发

择善JAVA的学习关于String与内存

2015-07-17 22:26 218 查看
String st="abc";

String st2="abc";

System.out.pringln(st==st2);  //输出true

String sd=new String("abc");

String sd2=new String("abc");

System.out.println(sd==sd2);   //这里输出false

String sd3=sd2.intern();

System.out.println(sd3==sd2); //这里输出的是true

上面的是JAVA面试的常出的题,

没有new的时候,abc放到常量池里,常量池里面一个值得常量只能有一个,就是说常量池每个个体都是不同值的,所以st和st2指向的是相同的常量池的个体,所以第一个是true;第二个用new虽然是相同的值,但是他们是用new的,所以都会在推内存分别建立两个个体,但值一样。

如果new的时候常量池没有这个值,那么常量池也会放一个,等于new后在堆和常量池都建立了相同值的个体。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: