叉烧店并不卖叉烧

String str1 = “abc”与String str1 = new String(“abc”)的区别

java TTT 100℃ 0评论

参考 参考2

在创建方式上。当运行String str1 = "abc"时,JVM不会立即创建一个String对象,而是先去栈中查找是否有字面值为abc的变量存在,如果存在,则立即将此变量存的指向abc字面值的地址赋值到str1中。如果不存在,会在运行时常量池中存入abc,然后在堆(Heap)中创建一个对象来指向abc,再将该对象的地址存到str2(引用)变量中

运行String str1 = new String("abc");时,JVM不会去栈中查找是否存在字面值abc的引用对象。而是直接在堆中创建一个新的String对象,并且将abc存放到String对象中

字符串比较上

String str1 = "a";
String str2 = "a";
String str3 = new String("a");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false

String str4 = "hello";
String str5 = "hell" + "o";
System.out.println(str4 == str5); // true;

转载请注明:叉烧店 » String str1 = “abc”与String str1 = new String(“abc”)的区别

喜欢 (0)
发表我的评论
取消评论

CAPTCHA Image
Reload Image
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址