哪位大神帮忙看一下。为什么输出的全都是false?

import java.util.Scanner;
public class java{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入您的姓名:");
String a=in.next();
String b=("q");
boolean c;
c=a==b;
System.out.println(c);
}
}

简单点来说,a == b 比较的是a 和 b 的引用, a.equals(b) 比较的才是a 和 b 的值!

详解的话,

java中new出一个对象后得到的是这个对象的地址,然后可以把这个地址赋给一个对象引用,也就是一个变量,通过这个变量我们可以直接操作这个对象,这一点可以联想C语言里面结构体指针利用 . 号操作结构体一样

equals 方法是Object类中的一个方法,一般会被子类复写,像String类就复写了Object类的equals方法,String类的equals方法是比较的字符串的内容(建议查看String类源代码就一清二楚了),如果子类没有复写Object类的equals方法的话,那么Object类的equals方法是这样实现的,源代码:
public boolean equals(Object obj) {
return (this == obj);
}
所以如果子类不重写equals方法的话,它就等价于==
明白了否?

是这是基础中的基础,一定要理解透彻!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-22
要使用 c = a.equals(b);

== 是判断是不是同一块内存的,好好看java书吧