java吧 关注:1,246,313贴子:12,722,448

请教一个题目,看着有点晕。

只看楼主收藏回复

String str1=new String("Hello");
String str2="Hello";
String str3=str1;
String str4=new String("Hello");
String str5="Hello";
请问以下哪些选项的结果为true?
A.str1==str2
B.str1==str3
C.str1==str4
D.str2==str5
请问:这些选项都是true吗?


1楼2015-01-24 14:34回复
    我感觉B是。


    来自Android客户端2楼2015-01-24 14:42
    回复
      感觉abd不是


      IP属地:浙江3楼2015-01-24 14:54
      回复
        b是的


        IP属地:浙江来自iPhone客户端4楼2015-01-24 15:03
        回复
          bd都是对的


          来自iPhone客户端5楼2015-01-24 15:31
          收起回复
            bd吧


            IP属地:安徽来自Android客户端6楼2015-01-24 15:45
            回复
              str2和5,1和3是指向同一个地址,所以bd


              IP属地:广东来自Android客户端7楼2015-01-24 15:54
              回复
                好像没有哪里表示2和5是同一个变量啊!1和3才是同一个变量。2和5只是值相等的两个不同的变量。我感觉是选b。


                来自手机贴吧8楼2015-01-26 22:14
                收起回复
                  你要区分==和equals的区别


                  IP属地:河南9楼2015-01-26 23:10
                  回复
                    ==是地址值。equals是被String重写,比较的是内容。new是在堆内存开辟空间有地址和初始化值。而直接=的是在字符串常量池。在对内存的的引用也会去常量池找对应字符串。你要能分清楚,这题很简单


                    IP属地:北京来自Android客户端10楼2015-01-26 23:15
                    回复
                      bd 等于比较的是引用


                      IP属地:北京来自Android客户端11楼2015-01-26 23:35
                      回复
                        BD
                        "HELLO"存在于串池中 相同的字符串共用
                        new String("HELLO")在另外一片空间创建对象 ==比较的是 引用中的地址


                        IP属地:四川12楼2015-01-26 23:49
                        回复
                          看着好容易,可是肿么觉得大家说的都有道理


                          来自Android客户端13楼2015-01-27 00:04
                          回复
                            理解下窜池就可以了。


                            IP属地:湖北来自Android客户端14楼2015-01-27 00:15
                            回复