2013-08-06 114 views
-6

我只是新来的java和试图做出相等的代码,但它不会与==工作,只与.equals()不知道为什么。为什么==不工作,但.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"); 
      } 

     } 
    } 
+2

当你刚刚接触一种已经存在了15年以上的语言时,你可以假设:a)你以前回答过的大部分问题都是以前回答过的,并且快速搜索可以避免恼人的人看到这些问题反复出现。 ,b)如果它不以你认为它不是bug的方式工作,那么它现在是一个“功能”。 ;) –

回答

1

我只是新来的Java,并试图做出等于代码,但它不会与==工作,只能用.equals()不知道为什么

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

  • ==检查找到一个很好的解释两个变量是否指向同一个对象。
  • equals()方法检查对象的内容是否相同。
  • 所以如果==返回true,则equals()方法还因为它们是指相同的对象,因此它们是相等的(通过equals()合同一个对象应该等于本身)
+0

'所以如果==返回true,那么equals()方法也会返回true'是的,对于'String'来说是这样,对于任何其他类都有合理的写入。但情况并非总是如此。 –

+0

@JohnN。我试图解释等量合同。一个对象应该等于自己。当两个变量引用同一个对象时,那么'=='和'equals()'应该返回true –

+0

我同意。一个对象应该等于它自己。但它并不能保证(通过语言或JVM或其他),它始终是。许多“有趣”的错误被发现,写得很差的类没有遵守所有“等于”合同要求中最基本的要求。 –

0

使用String.equals(String otherString)函数返回真比较字符串,而不是==运营商。

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

+0

我认为它是'String.equals(Object someObjectThatPossiblyIsAString') –

0

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

0

试图做与==与字符串正在检查参考等于。如果字符串是完全一样的,意思是引用了同一个地方,那么这将是true,否则false

equals()检查,如果字符串匹配,因此,如果字符串包含相同的值,那么你会得到true

相关问题