基础学习视频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。
希望大神从内存存储方面(栈、堆神马的)帮忙解释。最好画个栈、堆、内存神马的图。
|