java字符串比较,为什么打印的数据一样,对比值却不一样?
Strings1=newString("amit");Strings2=s1.replace('m','r');Strings3="arit";Strings4="ari...
String s1 = new String("amit");
String s2 = s1.replace('m','r');
String s3 = "arit";
String s4 = "arit";
System.out.println(s2);
System.out.println(s3);
System.out.println(s2 == s3);
System.out.println(s3 == s4);
运行结果是:
arit
arit
false
true
应该两个都是true才对呀。 展开
String s2 = s1.replace('m','r');
String s3 = "arit";
String s4 = "arit";
System.out.println(s2);
System.out.println(s3);
System.out.println(s2 == s3);
System.out.println(s3 == s4);
运行结果是:
arit
arit
false
true
应该两个都是true才对呀。 展开
展开全部
JAVA里,String是一个类,你用==比较的话,如果不是同一个对象,就会返回false
S2的声明方式,相当于重新创建了一个String对象
变量S3和S4的声明方式,都指向堆内存中同一个String对象,所以用S2和S3比较返回的是false,S3和S4比较返回的是true
S2的声明方式,相当于重新创建了一个String对象
变量S3和S4的声明方式,都指向堆内存中同一个String对象,所以用S2和S3比较返回的是false,S3和S4比较返回的是true
追问
完蛋,我不知道你们谁说的是正确的,都挺有道理的。
追答
都是对的,表达方式不一样而已,要搞清楚这个问题研究下==和equals 方法的区别就知道了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这方面涉及到基本类型和字符串的常量池,s3 == s4两个变量引用的是常量池里同一个内存地址,所以相等
追问
完蛋,我不知道你们谁说的是正确的,都挺有道理的。
追答
==。这个对于基本类型来说。只比较值是否相等。而对于变量来说。是比较内存地址是否相等。因为s3和s4引用常量池同一个常量“arit”,所以s3==s4.即它们的地址相等、而s2==s3是false是因为s2是一个String的对象,s2有自己的独有的内存空间地址,所以s2==s3的地址是不同的。为false。懂了么?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-07-04
展开全部
==比较的内存地址,要比值用s3.Equals(s2)
追问
完蛋,我不知道你们谁说的是正确的,都挺有道理的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询