当前位置: 代码迷 >> Java相关 >> 新手发帖,请教大家一个关于String的问题
  详细解决方案

新手发帖,请教大家一个关于String的问题

热度:86   发布时间:2005-08-24 09:30:00.0
新手发帖,请教大家一个关于String的问题
Given:
String s= "hello";
String t = "hello";
char c[] = {'h','e','l','l','o'} ;
Which return true?
A. s.equals(t);
B. t.equals;
C. s==t;
D. t.equals(new String("hello"));
E. t==c.
答案:(acd)
-----------------------
答案C不知道为什么是对的,s,t不是两个对象吗?而“= =操作符比较的是操作符两端的操作数是否是同一个对象”,如果说两个对象他们所指的内容是一样的话,那是不是默认地有这么一步操作:s=t ?我觉得只有这样的话s,t才指向同一个对象,不知道是不是这么一回事。
----------------解决方案--------------------------------------------------------
在这里 s 和 t  确实一个同一个String Object.  因为他们都是那个 String 常量 "hello".
但是如果写成下面的形式:
String s = new String("hello");
String t = new String("hello");
注意了,这里用到了 new 那么 s 和 t 就是两个不同的 Object 了。

还有需要指出的:
equals 比较的是 两个 Object 的内容,只要内容相同就表示两个Object 相同
而 == 比较的是两个Object 自身,即他们的存储地址也必须一样,才认为这两个Object 相同。
----------------解决方案--------------------------------------------------------
  相关解决方案