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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 换一个昵称 中级黑马   /  2016-5-28 00:11  /  1005 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

* 1.判断定义为String类型的s1和s2是否相等
        * String s1 = "abc";
        * String s2 = "abc";
        * System.out.println(s1 == s2);                         //true        字符串存储在方法区的常量池中,系统会现在常量池中找,有的话会直接调用       
        * System.out.println(s1.equals(s2));                 //true     equals方法比较的是两个字符窜的内容
* 2.下面这句话在内存中创建了几个对象?
        * String s1 = new String("abc");                        //两个 创建两个对象,一个在常量池中,一个在堆内存中
* 3.判断定义为String类型的s1和s2是否相等
        * String s1 = new String("abc");                        //记录的是堆内存对象的地址值
        * String s2 = "abc";            //记录的是常量池中的地址值
        * System.out.println(s1 == s2);                //false
        * System.out.println(s1.equals(s2));                //true
* 4.判断定义为String类型的s1和s2是否相等
        * String s1 = "a" + "b" + "c";
        * String s2 = "abc";
        * System.out.println(s1 == s2);                                //true java中有常量优化机制
        * System.out.println(s1.equals(s2));                //true
* 5.判断定义为String类型的s1和s2是否相等
        * String s1 = "ab";
        * String s2 = "abc";
        * String s3 = s1 + "c";
        * System.out.println(s3 == s2);                //false
        * System.out.println(s3.equals(s2));                //true

8 个回复

正序浏览
感谢分享
回复 使用道具 举报
谢楼主分享啊
回复 使用道具 举报
谢谢分享楼主好人啊
回复 使用道具 举报
良心贴吧啊.谢谢
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
zhenying.wang 发表于 2016-5-28 00:41
最后一个是false是何解?

最后一个是在堆内存中创建一个字符串对象
对象会从s1中拿到一个"ab"副本
通过字符串缓冲区生成"abc"赋地址值给s3
回复 使用道具 举报
最后一个是false是何解?
回复 使用道具 举报
最后一个是false是何解?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马