Почему if возвращает false, если оно должно выполняться?

Переменную function типа String мы получаем за счет регулярного выражения. Регулярное выражение сравнивается с HTML страницей. То есть в переменной function хранятся некоторый текст с сайта. funcEx[0] принимает значение "showMSG". Далее идет сравнение, где я сравниваю funcEx[0] == "showMSG" и оно по непонятным мне причинам возвращает false. Ниже прикрепил картинку с результатом выполнения в консоли. Буду благодарен за помощь.

Console

while(scanner.hasNextLine())
{
//  System.out.println(scanner.nextLine());
    Pattern p = Pattern.compile("<p>(.+?)<\\/p>");
    Matcher m = p.matcher(scanner.nextLine());
//  System.out.println(" " + m.find());
    if(m.find())
    {
        // функция с аргументами
        String function = m.group(1);
        // вывод текста взятого с сайта
        System.out.println(m.group(1));
        String [] funcEx = function.split(" ");
        // вывод первого слова текста. Как мы видим
        // на картинке вывелся текст: "showMSG"
        System.out.println(funcEx[0]);

        // и в данный момент условие не выполняется :с Выполняется else
        if(funcEx[0] == "showMSG")
        {
            JOptionPane.showMessageDialog(null, "CMD", funcEx[1], JOptionPane.OK_CANCEL_OPTION);
        }
        else
        {
            System.out.println("Условие ложно");
        }
    }
}

Ответы (1 шт):

Автор решения: Arty Mart

Попробуйте вместо == ставить .equals(). Возможно это решит вашу проблему и такой способ более правильный при сравнении строк и объектов.

→ Ссылка