请教toCharArray()函数

hwangita 2007-10-18 03:53:00
public class StringChar {

public static void main(String args[]){

String str="hello";
char c[]={'h','e','l','l','o'};

char ch[]=str.toCharArray();

System.out.print("c:");
System.out.println(c);
System.out.print("ch:");
System.out.println(ch);

//ch, c 之间的比较
if(ch==c)
System.out.println("ch==c:true");
else
System.out.println("ch==c:false");
if(ch.equals(c))
System.out.println("ch.equals(c):true");
else
System.out.println("ch.equals(c):false");

//ch,s之间的比较
if(ch.equals(str))
System.out.println("ch.equals(str):true");
else
System.out.println("ch.equals(str):false");

}

}
输出:
c:hello
ch:hello
ch==c:false
ch.equals(c):false
ch.equals(str):false


这是我写的一个程序,请高手请教,为什么结果都是false;尤其不懂的是比较equals方法时,内容不都是一样的吗?请教高手指教!
...全文
2045 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pfs1314520 2008-10-05
  • 打赏
  • 举报
回复
愚见:equals与==还是有区别的,一个是比较两个对象内容是否一致,一个是比较位置是否一样
hwangita 2007-10-31
  • 打赏
  • 举报
回复
谢谢大家的指点,让我学会不少:

1,在object类中==和equals是一样的,比地址;

2,有些类,如String改写了equals,它比的是字符串的内容;

3,数组的equals是object类的,也就是==,要比较数组内容,必须取出来逐个比!
zbl0201 2007-10-30
  • 打赏
  • 举报
回复
数组名代表的是数组的首地址
不同的数组地址肯定不同了
chjiangsh 2007-10-29
  • 打赏
  • 举报
回复
你看看这个帖子,看看应该明白了,http://topic.csdn.net/u/20071005/01/6acf83ad-3bf0-4b6f-8485-f164fd4daf63.html
「已注销」 2007-10-29
  • 打赏
  • 举报
回复
不同类型的对象,是不能equals的,一般来说
jstl1point0 2007-10-29
  • 打赏
  • 举报
回复
ch==c:false 都是字符数组,代表内存中2个不同地址的变量。所以不相等。
ch.equals(c):false 字符数组无法比较。要取出里面的值,在比较。
ch.equals(str):false 数组无法比较。
胡矣 2007-10-29
  • 打赏
  • 举报
回复
ch.equals(c)的时候是比较前后是否是同一个对象.
java.lang.object中的方法如下:
public boolean equals(Object object_0_) {
return this == object_0_;
}
也就是ch.equals(c)和ch == c 是相同的.
ch.equals(str)这个调用的也是object中的equals方法,所以同上.

而String中的eqauls是比较两个字符串是否相等.
String s1 = "hello";
String s2 = "hello";
s1.equals(s2);//true

koj5201314 2007-10-29
  • 打赏
  • 举报
回复
支持一下
Dan1980 2007-10-29
  • 打赏
  • 举报
回复
晕,这还要牛人解释?很简单啊!
你的ch的类型是char[],也就是数组。数组这个类型其实就是结合了某些底层实现的Object,其大部分接口的实现和Object是一样的。所以char[]的equals()就是Object的equals(),即和==运算等价。
hwangita 2007-10-29
  • 打赏
  • 举报
回复
ch==c:false
ch.equals(c):false
ch.equals(str):false

究竟是为什么?有牛人仔细解释下吗
tianfeng722 2007-10-18
  • 打赏
  • 举报
回复
看了下API,是这么说的:
equals
public boolean equals(Object obj)将此对象与指定对象比较。当且仅当参数不是 null,而是一个与此对象包含相同 char 值的 Character 对象时,结果才是 true。
tianfeng722 2007-10-18
  • 打赏
  • 举报
回复
第一个我懂,c和ch都是引用,但是引用的不是同一个字符串,所以就不同了,第二个我帮你调试下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧