当前位置: 代码迷 >> Java相关 >> 一道小题(和答案不一样)
  详细解决方案

一道小题(和答案不一样)

热度:147   发布时间:2006-11-15 00:44:02.0
一道小题(和答案不一样)
Given the following code:
String s = "hello";
String t = "hello";
char c[] = {'h','e','l','l','o'} ;
Which return true?
a s.equals(t);
b t.equals(c);
c s==t;
d t.equals(new String("hello"));
e t==c.
答案 A、D
但是我感觉c也对啊 因为我感觉虽然 ==是指对内存地址进行比较
squals()是对字符串的内容进行比较,但是s的内容在虚拟机中一个专门的字符串池里,再新建t时,它会先在字符串池里找hello,如果有,t就指向这个hello,没有的话就再新建一个,是吧 所以c也是正确的啊 我编译了一下也是对的

[此贴子已经被作者于2006-11-15 0:48:49编辑过]

搜索更多相关的解决方案: 内存  following  return  虚拟机  字符串  

----------------解决方案--------------------------------------------------------

你说的对,
也不是很明白


----------------解决方案--------------------------------------------------------
C确实是对的
----------------解决方案--------------------------------------------------------
如果变成String s=new String("hello");就不同了吧.
----------------解决方案--------------------------------------------------------
String s=new String("hello");
这样的话 肯定是不相同的 因为新建了一个
----------------解决方案--------------------------------------------------------
我也看到了
----------------解决方案--------------------------------------------------------
c肯定不对啊,地址是不同的,内容相同!==是比较地址,相当于指针!
----------------解决方案--------------------------------------------------------
  路过
----------------解决方案--------------------------------------------------------
在软件园的学习老师讲过,对于相同的字符,java为了节省空间,指向同一地址,也就是只保存一次?
----------------解决方案--------------------------------------------------------
以下是引用DeViLMarryYu在2006-11-17 21:59:54的发言:
c肯定不对啊,地址是不同的,内容相同!==是比较地址,相当于指针!

谁说C不对,C就是对的
这叫常量池


----------------解决方案--------------------------------------------------------
  相关解决方案