黑马程序员技术交流社区
标题:
关于String的一个小面试题
[打印本页]
作者:
小牛想成为大牛
时间:
2016-11-4 00:36
标题:
关于String的一个小面试题
String str =new String("aaaa");
String str1 ="aaaa";
区别:第一个先在方法区的常量池中创建"aaaa",然后在堆内存中开辟空间创建了一个对象,并有新的地址值;第二个直接在方法区的常量池中创建了"aaaa",str1直接指向了该地址值所以str.equals(str1)------true ; str ==str1 -----false
String s1 ="aaa";
String s2 ="bbb"; s3 == s1+s2; -----false
String s3 ="aaabbb"; s3 =="aaa"+"bbb"; -----true
字符串变量相加的过程,是先开辟一个空间,然后将结果赋值进去,
而字符串常量相加的过程是先进行拼接,然后在常量池中寻找,有则指向,无则开辟新的空间
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2