日期:2014-05-20  浏览次数:20757 次

这是为什么???
public class test4 {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
         System.out.print("请输入姓名:");
         char name = input.next().charAt(0);
         System.out.print("请输入密码:");
        int pass = input.nextInt();
        if (name == '青' && pass == 123 ) {
System.out.println("欢迎你回来青!");
} else {
           System.out.println("对不起,你不是青!");
    }  
}
    }
这个程序这样写没有问题;输入青和123,得到结果“欢迎你回来青” 
但是 我之前name定义的是string型的,代码如下:
   Scanner input = new Scanner(System.in);
         System.out.print("请输入姓名:");
         String name = input.next();
         System.out.print("请输入密码:");
        int pass = input.nextInt();
        if (name == "青" && pass == 123 ) {
System.out.println("欢迎你回来青!");
} else {
           System.out.println("对不起,你不是青!");
    }  
}
这样的话,程序没有显示错误,但是输入青和123,结果不正确,总是"对不起,你不是青!"
是条件 name == "青" 有问题 还是别的啥问题啊 求教各位大神 新手菜鸟再次膜拜
string input class

------解决方案--------------------
把if 判断换成
if (name.equals("青") && pass == 123 ) 
就不会出现你所说的问题了。
关于String对象 equals 与 == 比较的问题?
就是内容与值的比较。
------解决方案--------------------
一个是字符型,基本数据类型;'青'
一个是字符串型,是复杂数据类型;"青"
上下两者完全不同的概念
------解决方案--------------------
一个是简单类型,一个是String类型,操作有区别的
------解决方案--------------------
用equals进行字符串比较