Проверка на вводимый параметр String[] args [дубликат]

119
05 января 2020, 11:50
На этот вопрос уже даны ответы здесь:
Как сравнивать строки в Java? (2 ответа)
Закрыт 9 месяцев назад.

Есть такой код:

public class Main {
    public static void main(String[] args) {
        if (args[0] == "hi")
            System.out.println("Hello");
        else
            System.out.println("Bye");
    }
}

Как видите я хочу, чтобы после запуска с скомпилированным выше кодом файл Main.class, с параметром hi, в терминал выводилось сообщение Hello, но выводится Bye. Почему?

Answer 1

Используйте метод equals для сравнения двух строк, которые создаются во время выполнения.

Рассмотрите эту программу

import java.util.*;
import java.io.*;
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        System.out.println( "Run-time String definition:" );    
        String s1 = "He";
        String s2 = "llo";
        System.out.println( s1 + s2 == "Hello" );
        System.out.println( ( s1 + s2 ).equals( "Hello" ) );
        System.out.println( "\nCompile-time String definition:" );  
        String s3 = "Hello";
        System.out.println( s3 == "Hello" );
        System.out.println( s3.equals( "Hello" ) );
    }
}

Ее вывод на консоль

Run-time String definition:
false
true
Compile-time String definition:
true
true
READ ALSO
Дженерики в Java

Дженерики в Java

Возможно ли в теории на этапе компиляции обнаружить некорректное преобразование объекта одного класса в объект другого?

109
Реализовать SIMD на java

Реализовать SIMD на java

У меня есть задача реализовать сортировку пузырьком архитектурой Флинна а именно SimdВ Simd сказано, что это должны быть векторные операции,...

134
Как сделать проверку на то, что исключение действительно выбросится?

Как сделать проверку на то, что исключение действительно выбросится?

на примере функции water(), в которой есть проверка на пустую строку и null

140