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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© autumnforest 中级黑马   /  2015-11-12 00:53  /  597 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Exec8 {
        public static void main(String[] args) {
                String s1 = "a";
                String s2 = "b";
                String s3 = "ab";
                String s4 = "ab";
                System.out.println(s3 == s4); //结果为true,享元机制
                String s5 = "a" + "b";
                System.out.println(s3 == s5); //结果为true,常量优化机制
                String s6 = s1 + s2;
                System.out.println(s3 == s6); //结果为false,两个变量相加
                String s7 = new String("ab");
                System.out.println(s3 == s7); //结果为false,s7引用的实体在堆内存中
                final String s8 = "a";
                final String s9 = "b";
                String s10 = s8 + s9;
                System.out.println(s3 == s10); //结果为true,原理同s3 == s5,被final修饰的变量也是常量,同样享受常量优化机制
        }
}

5 个回复

倒序浏览
赞一个,感觉很厉害的样子。今天才刚开始学到String
回复 使用道具 举报
学习了 ,使用字符串应该注意的细节
回复 使用道具 举报
不用== 用equals就有很多不同结果了吧?
回复 使用道具 举报
感觉好复杂的样子
回复 使用道具 举报
==和 equals,是 java基础里面挺绕的东西,建议了解下底层知识
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马