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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小p 中级黑马   /  2015-7-22 22:23  /  294 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  StringDemo
{
        public static void main(String[] args)
        {       
                String s1="abc";//s1是一个类类型变量,“abc”是一个对象。
                                                //字符串最大特点,一旦被初始化就不可以被改变
                String s2=new String("abc");
                /*s1和s2的区别?
                s1在内存中有一个对象
                s2在对象中有两个对象
                */

                System.out.println(s1==s2);
                System.out.println(s1.equals(s2));//String类复写了Object类中equals方法
                                                                                        //该方法用于判断字符串是否相同
        }
}

3 个回复

倒序浏览
楼主理解的比较透彻,我看的一知半解,希望通过不断学习能看懂
回复 使用道具 举报
不是那样解释的,首先s1 是在常量池中有“abc”这个空间,s1 直接指向了常量池,
而s2则是在堆内存中开辟了一个空间,并将“abc”赋值给该对象,再将其地址值传给s2
回复 使用道具 举报
怎么我之前的回复没了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马