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方法时,内容不都是一样的吗?请教高手指教!
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方法时,内容不都是一样的吗?请教高手指教!
equals
public boolean equals(Object obj)将此对象与指定对象比较。当且仅当参数不是 null,而是一个与此对象包含相同 char 值的 Character 对象时,结果才是 true。
ch.equals(c):false
ch.equals(str):false究竟是为什么?有牛人仔细解释下吗
你的ch的类型是char[],也就是数组。数组这个类型其实就是结合了某些底层实现的Object,其大部分接口的实现和Object是一样的。所以char[]的equals()就是Object的equals(),即和==运算等价。
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.equals(c):false 字符数组无法比较。要取出里面的值,在比较。
ch.equals(str):false 数组无法比较。