Java 简单if-else语句不起作用

Java 简单if-else语句不起作用,java,android,if-statement,Java,Android,If Statement,我有一个简单的密码保护。我是这样做的: EditText editText1 = (EditText) findViewById(R.id.editText1); String Password = editText1.getText().toString(); if(Password == "a"){ Toast.makeText(getApplicationContext(), "Success" + Password, Toast.LENGTH_SHORT).show(); } el

我有一个简单的密码保护。我是这样做的:

EditText editText1 =  (EditText) findViewById(R.id.editText1);
String Password = editText1.getText().toString();
if(Password == "a"){
  Toast.makeText(getApplicationContext(), "Success" + Password, Toast.LENGTH_SHORT).show();
} else {
  Toast.makeText(getApplicationContext(), "Failure" + Password, Toast.LENGTH_SHORT).show();
}

我有编辑文本和按钮。若用户输入“a”,则toast应表示成功。但它总是说失败。我不明白我的代码中有什么错误…

您需要使用equals方法。不用于比较字符串。所以,你应该这样做-

if( Password.equals("a") )
{
    // ....
}    
试试这个:

if(Password.equals("a"))
{ 
...
}

在Java中,对非基元表达式使用
==
将始终比较对象引用。您询问的是
Password
是否引用了与字符串文字“a”完全相同的对象

使用以下任一选项:

if (Password.equals("a"))

这些将调用
String.equals(Object)
override,它确定两个引用是否引用相等的字符串对象,即相同的字符逻辑序列

如果
Password
为null,则前者将抛出异常;后者不会。不要将此视为始终使用后一种形式的建议-如果
Password
不应为null,则异常可能比在意外状态下继续要好


我还鼓励您与变量名保持一致-通常局部变量是camelCased,因此您可以使用
密码
,而不是
密码
==
进行引用检查,即检查两个字符串在内存中是否是物理上相同的对象。它们可能是(因为Java优化了某些字符串),但您永远不应该依赖于此

equals()
检查字符串是否有意义地相等,即是否具有相同的字符,这是您几乎100%的时间都想要的。

在Java中

Object comparison --> x.equals(y)
reference comparison --> x == y

谢谢你详细的回答!少喝酒,你会有不同的朋友只是开玩笑,但你可能想重温一下差异。我建议你略读一下,因为你已经知道如何编程了,你只需要学习语言。谢谢,谢谢大家。。。谢谢你的好意,没有嘲笑我。我尽力而为!!!
Object comparison --> x.equals(y)
reference comparison --> x == y