String类知识点整理-创新互联
先来个面试题吧
面试题一
String a = "ab";
String b = "a" + "b";
sysout(a==b)
答案是true还是false呢?
我们来一起分析一下这个过程
a变量创建时,会在常量池中开辟一块空间存放ab,然后将空间地址赋值给a;
b变量创建时,编译器会自动将+的结果运算出来,相当于b == "ab",此时JVM会先判断常量池中是否存在,直接将该对象的地址引用赋值给b变量,因此a跟b都是指向的常量池中的同一块地址,所以答案是true。
面试题二
String a = "ab";
String b = new String("ab");
sysout(a==b)
a变量的创建跟上一题一样
b使用new String(str)方式创建字符串时,如果常量池中存在,则拷贝一份放到堆中,并将堆中的地址指向b;如果常量池中不存在,则新建一份放到常量池中,并拷贝一份放到堆里,并将堆里的地址指向b。所以a字符串在常量池中的值跟b所指向的不是同一份,答案为false。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:String类知识点整理-创新互联
标题来源:http://cdiso.cn/article/ddjgdh.html