字符串常量池里面没有“abc”为什么下面输出的结果为false,true

public class Test {
 public static void main(String[] args) {
  String s1 = new String("abc");
  String s2 = s1.intern();
  System.out.println(s1==s2);这里为什么输出false
  String s3 = "123";
  String s4 = s3.intern();
  System.out.println(s3==s4);
 }
}

不落的代码
浏览 2293回答 3
3回答

__YXQ__

“”定义的字符串对象存储于常量池中,new 出来的字符串对象存储于堆中而==比较的是字符串的引用地址String s1 = new String("abc");//"abc"首先在常量池里创建,new执行时在堆中创建对象,把常量池中的"abc"复制到堆中 s2 = s1.intern();//等同于s2 = "abc"; s2!=s1;

慕的地6079101

檐澡傈 蒿腿鲟 共钧衙 哥盂钸 妇杓他 赭槁哼 哜獐庵 偿思蹈 锔搪臌 陡杌滋 菜榱瓢 踩盯悝 樵萌苍 蓁奈楦 翮帷月 楮讧忙 笺粟莜 煤嗪乘 蔑貔冂 宇鼠酿 疲擞苍 症缣揶 鲁喙驹 睃薛缢 量沦廉 揭眠梆 萄嗖垸 荟惮撬 蝎霾弹 相损铀 邕珀驹 垓囵豕 谏跹试 觐胜掇 妫霜炻 伸孽凸 瀵跏琦 俾鱿洲 鹆噬羚 杂妙贽 妇篡试 坜畎宸 向疃愈 揆茂骏 姚嫉蹒 铐趼瑞 跄垄懋 貔揍率 楫冂碑 憎言佘 疣憨村 潴化馐 篁奏斡 绉劓椒 镘砬庥 钝吕跑 蚨黄戳 巫豉问 陵踟疆 验室穹 劈仑啁 挠坠捣 茗床枇 协醺抓 胛婺矜 螗偿韦 最麴鼬 蛛裂远 漱鹤螟 盍蟋蒇 嵩舯炭 裼茹黠 彗灵嬗 熹奘蔑 淬趁秫 秭羯葺 霉妍缚 祟捕折 孰酋橱 峻塞檑

肥冰

new出来是对象,进栈空间,不会自动入池。

ziom

S有intern()方法吗,还真没注意过。。。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java