标题:java中地址字符串的地址问题
只看楼主
仍去寻酒
Rank: 2
来 自:火星
等 级:论坛游民
威 望:1
帖 子:14
专家分:27
注 册:2016-7-16
结帖率:100%
已结贴  问题点数:10 回复次数:4 
java中地址字符串的地址问题
                String s1="this is the secend string.";
        String s2="this is the secend string.";
        boolean result=s1==s2;
        System.out.println(result);
   
求教大神这个 = = 为什么输出结果是true?不是在内存里面重新开辟内存了吗?又不是常量进行寻找看是否有相同的。。。
搜索更多相关主题的帖子: result 字符串 java 
2016-07-19 22:27
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:10 
这就是引用和创建对象的区别了。引用的话就是在栈里找,若果有,就指向他,所以你这个是true。而new对象,则会在堆里创建一个,使用new的时候就不等了。
2016-07-20 10:14
仍去寻酒
Rank: 2
来 自:火星
等 级:论坛游民
威 望:1
帖 子:14
专家分:27
注 册:2016-7-16
得分:0 
回复 2楼 grmmylbs
懂了 3q~

不断的发现以前的自己是个傻逼 ,这就是人生
2016-07-20 22:53
阿狸1
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-7-20
得分:0 
输出的是波尔类型,结果不是false就是true,s1=s2所以是输出true
2016-07-20 22:55
wjh2014
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2015-7-7
得分:0 
直接这么创建的话 在内存里只有一个“this is the secend string.”常量,s1和s2都会指向这个内存的,这跟new不同,所以true
2016-07-28 14:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-467063-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112445 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved