浏览 1953 次
锁定老帖子 主题:奇怪的String
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-09
今天上午和同事讨论String的使用,众所周知,==比较两个字符串String的引用,equals比较两个字符串包含的值,那么大家看看,下面这几个的输出结果是什么样子呢? public static void main(String[] args) { String str = "hello"; System.out.println(str == "hello"); String str2 = new String("hello"); System.out.println(str2 == "hello"); String str3 = new String("hello"); str3 = str3.intern(); System.out.println(str3 == "hello"); } 请大家给出运行结果,并给出为什么? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-09
虚拟机做的些优化
str1 = "hello" 会保存住这个hello str2 = "hello"的时候不会去重新申请,把现有的引用给str2 这时候str1 == str2 但是用new的话铁定会新建一个 很多语言都有这样的特定,传说python初始化的时候会直接把1-100初始化 每次用到这些数时不会去重新新建,而是得到对应的引用 |
|
返回顶楼 | |
发表时间:2009-01-16
同意楼上观点,打印结果:true false true
|
|
返回顶楼 | |