Как я могу проверить строку на нулевое значение в Java? Я использую
stringname.equalsignorecase(null)
но это не работает.
string == null
сравнивает, если объект равен нулю. string.equals("foo")
сравнивает значение внутри этого объекта. string == "foo"
не всегда работает, потому что вы пытаетесь увидеть, одинаковы ли объекты, а не значения, которые они представляют.
Более длинный ответ:
Если вы попробуете это сделать, это не сработает, как вы обнаружили:
String foo = null;
if (foo.equals(null)) {
// That fails every time.
}
Причина в том, что foo имеет значение null, поэтому он не знает, что такое .equals; там нет объекта, из которого можно было бы вызвать .equals.
Вероятно, вы хотели:
String foo = null;
if (foo == null) {
// That will work.
}
Типичный способ защитить себя от нуля при работе со строками:
String foo = null;
String bar = "Some string";
...
if (foo != null && foo.equals(bar)) {
// Do something here.
}
Таким образом, если foo имеет значение null, он не оценивает вторую половину условного выражения, и все в порядке.
Самый простой способ, если вы используете строковый литерал (вместо переменной):
String foo = null;
...
if ("some String".equals(foo)) {
// Do something here.
}
Если вы хотите обойти это, в Apache Commons есть класс StringUtils, который обеспечивает нулевые безопасные операции со строками .
if (StringUtils.equals(foo, bar)) {
// Do something here.
}
Другой ответ был шутливым и сказал, что вы должны сделать это:
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
Пожалуйста, не делай этого. Вы должны выдавать исключения только для исключительных ошибок; если вы ожидаете нулевого значения, вы должны проверить его заранее и не позволять ему вызывать исключение.
На мой взгляд, для этого есть две причины. Во-первых, исключения происходят медленно; проверка на null выполняется быстро, но когда JVM выдает исключение, это занимает много времени. Во-вторых, код будет намного проще читать и поддерживать, если вы просто заранее проверите наличие нулевого указателя.
s == null
не сработает?
источник
equals()
если хотите сравнить значения . Но если вы хотите проверить, есть ли переменнаяnull
, вы используете==
.Конечно, работает. Вы упускаете важную часть кода. Вам просто нужно сделать вот так:
boolean isNull = false; try { stringname.equalsIgnoreCase(null); } catch (NullPointerException npe) { isNull = true; }
;)
источник
Используйте метод TextUtils, если вы работаете в Android.
TextUtils.isEmpty (str) : возвращает значение true, если строка имеет значение NULL или нулевую длину. Параметры: str проверяемая строка. Возвращает: true, если str имеет нулевую или нулевую длину.
if(TextUtils.isEmpty(str)) { // str is null or lenght is 0 }
Ниже приведен исходный код этого метода. Вы можете использовать директиву.
/** * Returns true if the string is null or 0-length. * @param str the string to be examined * @return true if str is null or zero length */ public static boolean isEmpty(CharSequence str) { if (str == null || str.length() == 0) return true; else return false; }
источник
Если мы посмотрим на реализацию метода equalsIgnoreCase, мы найдем эту часть:
if (string == null || count != string.count) { return false; }
Таким образом, он всегда будет возвращаться,
false
если аргумент естьnull
. И это, очевидно, правильно, потому что единственный случай, когда он должен возвращаться,true
- это когда equalsIgnoreCase был вызван для anull String
, ноString nullString = null; nullString.equalsIgnoreCase(null);
обязательно приведет к исключению NullPointerException.
Таким образом, методы equals не предназначены для проверки того, является ли объект нулевым только потому, что вы не можете их вызвать
null
.источник
Это выглядит немного странно, но ...
stringName == null || "".equals(stringName)
Никогда не было проблем с этим, к тому же это более безопасный способ проверки, избегая возможных исключений нулевой точки.
источник
Я не уверен, что было не так с ответом MYYN.
if (yourString != null) { //do fun stuff with yourString here }
Вышеупомянутая нулевая проверка вполне приемлема.
Если вы пытаетесь проверить, совпадает ли ссылка String (без учета регистра) с другой строкой, которая, как вы знаете , не является пустой ссылкой, сделайте что-то вроде этого:
String x = "this is not a null reference" if (x.equalsIgnoreCase(yourStringReferenceThatMightBeNull) ) { //do fun stuff }
Если есть какие-либо сомнения относительно того, есть ли у вас пустые ссылки для обеих сравниваемых строк, вам необходимо проверить наличие нулевой ссылки хотя бы на одной из них, чтобы избежать возможности исключения NullPointerException.
источник
Если ваша строка имеет значение "null", вы можете использовать
if(null == stringName){ [code] } else [Error Msg]
источник
импортируйте это в свой класс
import org.apache.commons.lang.StringUtils;
затем используйте его, они оба вернут истину
System.out.println(StringUtils.isEmpty("")); System.out.println(StringUtils.isEmpty(null));
источник
Вы можете проверить с помощью String == null
Это работает для меня
String foo = null; if(foo == null){ System.out.println("String is null"); }
источник
Конечно, user351809 выдаст исключение
stringname.equalsignorecase(null)
NullPointerException.Видите ли, у вас есть строковый объект
stringname
, который соответствует двум возможным условиям: -stringname
имеет какое-то ненулевое строковое значение (скажем, "компьютер"):ваш код будет работать нормально, поскольку он принимает форму,
"computer".equalsignorecase(null)
и вы получите ожидаемый ответ как
false
.stringname
имеетnull
значение:здесь ваш код застрянет, поскольку
null.equalsignorecase(null)
на первый взгляд кажется хорошим, и вы можете надеяться, что ответ
true
,но
null
это не объект, который может выполнитьequalsignorecase()
метод.Следовательно, вы получаете исключение из-за случая 2.
Я предлагаю вам просто использовать
stringname == null
источник
Простой способ:
public static boolean isBlank(String value) { return (value == null || value.equals("") || value.equals("null") || value.trim().equals("")); }
источник
Если
value
возвращено значение null, используйте:if(value.isEmpty());
Когда-нибудь, чтобы проверить null,
if(value == null)
в java он может не дать true, даже если String имеет значение null.источник
if(value.isEmpty())
даетNullPointerException
. В этом случае лучше использоватьif(value == null)
С Java 7 вы можете использовать
if (Objects.equals(foo, null)) { ... }
который вернется,
true
если оба параметраnull
.источник
Я понимаю, что на это был дан ответ давным-давно, но я не видел этого в публикации, поэтому решил поделиться тем, что делаю. Это не очень хорошо для читабельности кода, но если вам нужно выполнить серию нулевых проверок, мне нравится использовать:
String someString = someObject.getProperty() == null ? "" : someObject.getProperty().trim();
В этом примере для строки вызывается обрезка, которая выдаст NPE, если строка была нулем или пробелами, но в той же строке вы можете проверить на null или пробел, чтобы не получить тонну (больше ) трудно форматировать блоки if.
источник
Если я правильно понимаю, это должно сработать:
if(!stringname.isEmpty()) // an if to check if stringname is not null if(stringname.isEmpty()) // an if to check if stringname is null
источник
Ну, в последний раз, когда кто-то задавал этот глупый вопрос, ответ был:
someString.equals("null")
Это «исправление» лишь скрывает большую проблему , как
null
становится"null"
в первую очередь, хотя.источник
Есть два способа сделать это ... Скажите 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 ..
источник