Как проверить строку против нуля в Java? - PullRequest
84 голосов
/ 27 мая 2010

Как я могу проверить строку против нуля в Java? Я использую

stringname.equalsignorecase(null)

но это не работает.

Ответы [ 17 ]

1 голос
/ 01 ноября 2016

Простой метод:

public static boolean isBlank(String value) {
    return (value == null || value.equals("") || value.equals("null") || value.trim().equals(""));
}
1 голос
/ 31 января 2014

Конечно, пользователь 351809, stringname.equalsignorecase(null) сгенерирует исключение NullPointerException.
Видите, у вас есть строковый объект stringname, который соответствует двум возможным условиям: -

  1. stringname имеет некоторое ненулевое строковое значение (скажем, «компьютер»):
    Ваш код будет работать нормально, так как он принимает форму
    "computer".equalsignorecase(null)
    и вы получите ожидаемый ответ как false.
  2. stringname имеет значение null:
    Здесь ваш код застрянет, как
    null.equalsignorecase(null)
    Тем не менее, на первый взгляд все выглядит хорошо, и вы можете надеяться, что ответ будет true,
    но null не является объектом, который может выполнять метод equalsignorecase().

Следовательно, вы получаете исключение из-за случая 2.
Я предлагаю вам просто использовать stringname == null

1 голос
/ 26 января 2017

Если value вернул ноль, используйте:

if(value.isEmpty());

Когда-нибудь, чтобы проверить нуль, if(value == null) в Java, это может не дать истину, даже если Строка равна нулю.

0 голосов
/ 07 февраля 2014

Есть два способа сделать это .. Сказать String == null или string.equals () ..

public class IfElse {

    public int ifElseTesting(String a){
        //return null;
        return (a== null)? 0: a.length();
    }

}

public class ShortCutifElseTesting {

    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);
        System.out.println("enter the string please:");
        String a=scanner.nextLine();
        /*
        if (a.equals(null)){
            System.out.println("you are not correct");
        }
        else if(a.equals("bangladesh")){
            System.out.println("you are right");
        }
        else
            System.out.println("succesful tested");

        */
        IfElse ie=new IfElse();
        int result=ie.ifElseTesting(a);
        System.out.println(result);

    }

}

Проверьте этот пример .. Вот еще один пример сокращенной версии If Else ..

0 голосов
/ 27 мая 2010

Ну, в последний раз, когда кто-то задавал этот глупый вопрос, ответ был:

someString.equals("null")

Это «исправление» скрывает только большую проблему того, как null становится "null" в первую очередь.

0 голосов
/ 24 апреля 2019

С Java 7 вы можете использовать

if (Objects.equals(foo, null)) {
    ...
}

, который вернет true, если оба параметра null.

0 голосов
/ 26 ноября 2013

Я понимаю, что на этот вопрос давным-давно ответили, но я не видел этого сообщения, поэтому я решил поделиться тем, что делаю. Это не особенно хорошо для читабельности кода, но если вам нужно выполнить серию нулевых проверок, я бы хотел использовать:

String someString = someObject.getProperty() == null ? "" : someObject.getProperty().trim();

В этом примере для строки вызывается trim, которая выдает NPE, если строка имеет значение null или пробелы, но в той же строке вы можете проверить наличие null или пробела, чтобы не получить тонну (более) трудно форматировать, если блоки.

...