请教toCharArray()函数
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方法时,内容不都是一样的吗?请教高手指教!
------解决方案--------------------晕,这还要牛人解释?很简单啊!
你的ch的类型是char[],也就是数组。数组这个类型其实就是结合了某些底层实现的Object,其大部分接口的实现和Object是一样的。所以char[]的equals()就是Object的equals(),即和==运算等价。
------解决方案--------------------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
------解决方案--------------------ch==c:false 都是字符数组,代表内存中2个不同地址的变量。所以不相等。
ch.equals(c):false 字符数组无法比较。要取出里面的值,在比较。
ch.equals(str):false 数组无法比较。
------解决方案--------------------你看看这个帖子,看看应该明白了,http://topic.csdn.net/u/20071005/01/6acf83ad-3bf0-4b6f-8485-f164fd4daf63.html
------解决方案--------------------数组名代表的是数组的首地址
不同的数组地址肯定不同了