A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

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

字符串变量相加的过程,是先开辟一个空间,然后将结果赋值进去,
而字符串常量相加的过程是先进行拼接,然后在常量池中寻找,有则指向,无则开辟新的空间

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马