黑马程序员技术交流社区
标题:
关于String的几个小疑问
[打印本页]
作者:
夕默
时间:
2014-10-17 12:57
标题:
关于String的几个小疑问
基础学习视频152集,String。有如下代码:
String s1="abc";
String s2=new String("abc");
复制代码
并有如下几点小结:
1、“abc”是一个对象(s1是一个类类型变量);
2、常量,不能被改变。
3、s1内存中有一个对象,s2在内存中有两个对象。
4、String类复写了Object类中equals方法,该方法用于判断字符串是否相同。
以下是我的理解:
1、常量池中有个“abc”,并且是不能被改变的。
2、对象存放于内存中,内存中有一个s1的对象,s2由于调用构造函数时传递参数多了一个对象。
3、equals方法判断字符串是否相同都是判断的常量池中的"abc",所以s1与s2相等。==判断的是怎么进行的呢?
String s1="abc";
String s2= new String("abc");
String s3="abc";
复制代码
为什么s1==s2返回false,s1==s3返回true。
希望大神从内存存储方面(栈、堆神马的)帮忙解释。最好画个栈、堆、内存神马的图。
作者:
森屿北巷
时间:
2014-10-17 13:09
==就是判断是否是同一个对象,比较的是他们的地址。而equals比较的对象的内容。如果楼主明白了s1是一个对象,s2是两个对象,就好理解了。
作者:
森屿北巷
时间:
2014-10-17 13:16
补充。个人理解
无标题.png
(70.04 KB, 下载次数: 10)
下载附件
2014-10-17 13:16 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2