为什么==不工作,但.equals()是?

时间:2013-08-06 07:59:33

标签: java

我只是java的新手并试图创建一个等于代码,但它不适用于==,只有.equals()不确定原因。

    import java.lang.*;
    import java.util.*;

    public class password
    {
        public static void main(String args[]) 
        {
            Scanner Keyboard = new Scanner(System.in);
            String guess = Keyboard.newLine();

            String password = "1password";

            if (guess == password) {
                System.out.println("Welcome");
            } else {
                System.out.println("Login Failed");
            }

        }
    }

4 个答案:

答案 0 :(得分:1)

  

我只是java的新手,并尝试制作一个等于代码,但它不适用于==,只有.equals()不知道为什么

因为==比较对象引用而不是字符串的内容。 您可以在theJavaGeek

找到一个很好的解释
  • ==检查两个变量是否引用同一个对象。
  • equals()方法检查对象的内容是否相同。
  • 所以如果==返回true,那么equals()方法也会返回true,因为它们指的是同一个对象因此它们是相等的(按equals()契约一个对象应该等于它自己)

答案 1 :(得分:0)

使用String.equals(String otherString)函数比较字符串,而不是==运算符。

原因是==只比较object引用,其中.equals()检查相等性。

答案 2 :(得分:0)

字符串只应与.equals()进行比较,因为使用==可以比较不同的对象。

答案 3 :(得分:0)

尝试使用字符串==检查引用等于。如果字符串完全相同,意味着引用同一个地方,那么它将是true,否则false

执行equals()检查字符串是否匹配,因此如果字符串包含相同的值,那么您将获得true