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。
成都创新互联公司是专业的鲤城网站建设公司,鲤城接单;提供网站设计、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行鲤城网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
名称栏目:String类知识点整理
转载源于:http://myzitong.com/article/jjphpe.html