JAVA: String s1 = "asd"; String s2 = "asd"; System.out.println(s1==s2); 的输出结果是什么,请给详解

最好具体到s1和s2的物理地址、内存地址
2025-05-08 07:53:01
推荐回答(4个)
回答1:

是true,String比较特殊,它一旦初始化了之后,值就不会再改变了,所以为了节约内存空间,如果初始化的字符串在内存空间中是存在的,则其引用直接指向该字符串,所以你前面有了一个String s1 = "asd"; 当声明s2的时候发现内存中有了一个"asd"了,就不再开辟内存空间,直接将s2指向了开头得"asd",所以s1和s2实际上是指向了同一块堆内存,所以结果是true

回答2:

true
(s1 == s2)是结果boolean类型的,而boolean类型的输出值只有两个:true和false。所以输出的结果是true。
啰嗦一句哈:我觉得吧,学编程的最好方法就是自己动手实践了恩。自己去编译一下就会很清楚的恩,并且会更深刻!

回答3:

true ==比较字符串时比较的是值
你还要注意一个equals

邀请您加入 java俱乐部
http://tieba.baidu.com/club/11071750/invite/join/?c=13138956263dd08ebd656178cd8615862

回答4:

true
首先明确一点,通过“”(双引号)创建的String,是从字符串常量池里获取对象的。
s1在被创建的时候,因为字符串常量池里还没有asd,所以就在字符串常量池里创建asd对象并返回asd的地址引用。
s2在被创建的时候,字符串常量池里已经存在asd了,直接返回asd的地址引用。
s1和s2的地址引用都一样,返回true。