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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 927233671   /  2014-5-26 08:39  /  6321 人查看  /  26 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s1="abc"//创建一个字符串对象在常量池
回复 使用道具 举报
String s1="abc"//创建一个字符串对象在常量池  如果在创建一个字符串 如 String s2 = "abc" 此时在内存中它首先回去字符串池中查找当前字符串在池中是否含有 如果有就不创建 直接赋值给s2  此时s1的地址和s2的地址一样 ==比较的是内存中的地址 true  使用new 会在堆中开辟一块空间 地址不一样  此时为false
回复 使用道具 举报 1 0
顶一下!!!!!!
回复 使用道具 举报
本帖最后由 Mr.Wu 于 2016-5-7 11:35 编辑

理解的基本正确
1. s1==s2, 比较的是s1和s2存放的地址是否相同 ;
2. s1.equals(s2),比较的是 s1和s2指向的内容是否相同;
3.String s1="abc", “abc”存放在常量池中;
4. String s2=new String("abc");  new的东西存放在堆中。
5. 推荐用步骤3。
详见下图:


回复 使用道具 举报 1 0
嗯,很多干货,学到了。
回复 使用道具 举报
总结的好
回复 使用道具 举报
String类构造了两个对象,一个在堆内存中,一个在方法区的常量池中
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马