Почему я не могу сравнить текст из TextArea со строкой?

Так что я явно упускаю что-то совершенно очевидное здесь. У меня есть кнопка и список действий, подключенный к ней. Когда я нажимаю кнопку, я хочу запустить оператор 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 оба эти элемента были "привет". Но это пропускает это! Что я делаю неправильно?

РЕДАКТИРОВАТЬ: многие из вас говорят "использовать.equals". Кто-нибудь может сказать мне, почему?

5 ответов

Решение

Вам нужно использовать String.equals() сравнить два. Не ==

Это должно решить проблему.

Ты должен сделать area.getText()это метод, а не свойство.

Также вы должны сравнить их с equals не с ==,

Так

"hello".equals(area.getText())

это путь

Вам нужно сравнить String с помощью метода equals(),

Вы сравниваете строки в Java с равными (), а не ==.

Как другие указывают на String.equals нужно.

Причина этого в том, что == проверит, являются ли оба объекта одним и тем же объектом, т.е. имеют ли они один и тот же адрес памяти.

Другие вопросы по тегам