Java 为什么我不能将文本区域中的文本与字符串进行比较?

Java 为什么我不能将文本区域中的文本与字符串进行比较?,java,string,if-statement,jbutton,jtextarea,Java,String,If Statement,Jbutton,Jtextarea,很明显,我遗漏了一些非常明显的东西。我有一个按钮和一个连接到它的actionlistener。当我单击按钮时,我希望运行一个if语句,该语句获取TextArea的内容并将其与字符串进行比较。像这样: String a = "hello"; JTextArea area = new JTextArea("type something"); JButton button = new JButton("Go"); button. [insert actionlistener crap] /

很明显,我遗漏了一些非常明显的东西。我有一个按钮和一个连接到它的actionlistener。当我单击按钮时,我希望运行一个if语句,该语句获取TextArea的内容并将其与字符串进行比较。像这样:

String a = "hello";
JTextArea area = new JTextArea("type something");
JButton button = new JButton("Go");

button. [insert actionlistener crap]

    //here's the important part:
    if (area.getText() == "hello"){
        //this will not be executed
    }
真奇怪。我甚至检查了调试器,在if语句中,这两项都是hello。但是它跳过了它!我做错了什么

编辑:你们很多人都说使用。等于。有人能告诉我为什么吗?

你应该做area.getText,这是一个方法,而不是属性

您还应该将它们与等于而不是==进行比较

所以


方法就是这样。

您将java中的字符串与equals进行比较,而不是==。

您需要借助方法来比较字符串。

您需要使用String.equals来比较两者。不==


这应该可以解决问题。

正如其他人指出的那样,需要String.equals


原因是,==将检查两个对象是否实际上是同一个对象,即具有相同的内存地址。

第一个是错误的,因为我键入了q,我在实际代码中没有这样做。+1是第一个提到这两个错误的响应者。@Isiahtaylor==检查身份,equals检查两个值是否相等。有关更多详细信息,请访问Teeg提供的链接作为您问题下的注释。如果area.getText.trim.equalshello,请使用trim方法跳过textarea中的空白
"hello".equals(area.getText())