[填空题] 类Test定义如下:class Test{ public static void main(string args[]) { String s1="abc";

[填空题] 类Test定义如下:class Test{ public static void main(string args[]) { String s1="abc";,第1张

[填空题] 类Test定义如下:class Test{ public static void main(string args[]) { String s1="abc";

[填空题] 类Test定义如下:class Test{ public static void main(string args[]) { String s1="abc"; String s2=new String(s1); if(s1==s2) System.out.println("s1==s2"; if(s1.equals(s2)) System.out.println("s1.equals(s2)"); }}那么程序的执行结果为: 【15】

正确答案:

s1.equals(s2)

参考解析:

本题考查的是:“==”和equals的区别。= *** 作符专门用来比较变量的值是否相等。比较好理解的一点是:int a=10;int b=10;则a==b将是true。但不好理解的地方是: String a=new String("foo");String b=new String("foo");则a==b将返回false。对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了 new *** 作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用“==” *** 作符,结果会是false。诚然,a和b所指的对象,它们的内容都是"foo",应该是“相等”,但是== *** 作符并不涉及到对象内容的比较。对象内容的比较,正是equals方法做的事。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5585067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存