回答
s == null
将不起作用?
当然有效。你错过了代码的重要部分。您需要做的仅仅是这样的:
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
;)
+1 - 是** EVIL **。 – 2010-05-27 11:23:03
如果你读到这里,请认识到@aioobe在开玩笑;你不应该这样做。 – 2010-05-27 14:14:24
-1 for being – chburd 2010-05-27 14:28:59
我不知道什么是错的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异常。
如果我们看一下equalsIgnoreCase方法的实现,我们发现这部分:
if (string == null || count != string.count) {
return false;
}
所以它总是返回false
如果该参数null
。这显然是正确的,因为它应该返回true
的唯一情况是,当equalsIgnoreCase是在null String
调用,但
String nullString = null;
nullString.equalsIgnoreCase(null);
肯定会导致一个NullPointerException。
所以equals方法不是用来测试一个对象是否为空,只是因为你不能在null
上调用它们。
好了,最后一次有人问这个傻问题,得到的答复是:
someString.equals("null")
这种“修复”隐藏的仅仅是如何null
成为摆在首位"null"
更大的问题,虽然。
它不 - 这是不是一个修复,而不是一个有用的答案。 – 2014-06-05 15:57:34
我想成为第一个说:“wat” – 2014-12-31 16:39:01
这个不回答的问题 – 2016-05-14 02:37:35
string == null
比较对象是否为空。 string.equals("foo")
比较该对象内部的值。 string == "foo"
并不总是有效,因为您试图查看对象是否相同,而不是它们所代表的值。
较长的答案:
如果你试试这个,这是行不通的,因为你已经发现:
String foo = null;
if (foo.equals(null)) {
// That fails every time.
}
的原因是,foo是零,所以也没有知道.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为空,这不是”对条件的后半部分进行评估,事情都是正确的。
最简单的办法,如果你使用一个字符串(而不是一个变量),方法是:
String foo = null;
...
if ("some String".equals(foo)) {
// Do something here.
}
如果你想解决的是,Apache的共同性有一类 - StringUtils - 提供空值安全的字符串操作。
if (StringUtils.equals(foo, bar)) {
// Do something here.
}
另一个反应是开玩笑的,说你应该这样做:
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
请不要那样做。你应该只抛出异常的例外;如果你期望一个空值,你应该提前检查它,而不要让它抛出异常。
在我的脑海里,有两个原因。首先,例外情况缓慢;检查null是很快的,但是当JVM抛出一个异常时,需要很多时间。其次,如果您提前检查空指针,代码更容易阅读和维护。
你错过了Yoda版本,每次也都有效: if(“foo”.equalsIgnoreCase(string)) – 2010-05-27 14:26:06
@Omry;很好的捕获,将增加。 – 2010-05-27 14:58:13
好帮助的解释。感谢您的好玩。 – 2012-09-12 13:48:46
这看起来有点奇怪,但是...
stringName == null || "".equals(stringName)
从来没有做这种方式的任何问题,再加上它的检查,同时避免潜在的空点异常更安全的方式。
小心NullPointer在这种情况下第二个条件应该是第一个。 – Pawan 2013-02-03 04:54:41
如果字符串为“空”值,那么你可以使用
if(null == stringName){
[code]
}
else
[Error Msg]
为什么null == stringName而不是stringName == null?我认为没有区别,但为什么这是首选(我见过很多)。我的首选是读命令LTR所以stringName == null,但想知道别人的想法。 – 2013-09-13 08:39:48
通常情况下,你把变量放在右边,这样你就不会错误地初始化变量:null = stringName产生一个编译错误,而stringName = null将是可能的 – Sarajog 2013-09-20 12:39:56
根本不是“正常”许多人明确禁止它,因为阅读代码库的人看起来不太自然。 – RichieHH 2014-03-05 11:52:44
我意识到这是很久以前的回答,但我还没有看到这个贴,所以我想我会分享什么我做。这不是代码的可读性特别好,但如果你有做了一系列的null检查的,我喜欢用:
String someString = someObject.getProperty() == null ? "" : someObject.getProperty().trim();
在这个例子中,修整被称为弦上,这将引发如果字符串为空或空格,则为NPE,但在同一行上,可以检查为空或空白,因此如果块没有大量(更多)难以格式化的结果。
你是什么意思检查空或空白?你只在这里检查null。空白是“COND?A:B”的可能回报之一。构建,对吗? – 2014-12-31 16:37:34
当然user351809,stringname.equalsignorecase(null)
会抛出NullPointerException。
看,你有一个字符串对象stringname
,随后2个可能的条件: -
stringname
有一些非空字符串值(比如“计算机”):
您的代码将正常工作,因为它需要表格
"computer".equalsignorecase(null)
并且您得到的预期响应为false
。stringname
有null
值:
这里你的代码将被卡住,因为
null.equalsignorecase(null)
然而,似乎擅长先来看看,你可能希望响应,true
,
但是,null
不是一个对象,可以执行equalsignorecase()
方法。
因此,你得到的异常是由于案件2
我建议你什么是简单地使用stringname == null
有两种方法可以做到it..Say 字符串== 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);
}
}
入住这example..Here是的。如果否则的快捷版本另一个例子..
不! .equals()不能与可能为空的对象一起使用,因此引导式解释是错误的。而这个答案的其余部分似乎毫无意义,与所问的问题无关。 – 2014-06-05 15:54:52
使用TextUtils方法。
TextUtils.isEmpty(str):如果字符串为null或0长度,则返回true。 参数: str中的字符串进行检查 返回: true,如果str为null或零长度
if(TextUtils.isEmpty(str)) {
// str is null or lenght is 0
}
以下是该方法的source code
/**
* 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;
}
进口它在你的类
import org.apache.commons.lang.StringUtils;
然后使用它们,它们都会返回true
System.out.println(StringUtils.isEmpty(""));
System.out.println(StringUtils.isEmpty(null));
你可以用字符串== NULL
这对我的作品
String foo = null;
if(foo == null){
System.out.println("String is null");
}
简单的方法来检查:
public static boolean isBlank(String value) {
return (value == null || value.equals("") || value.equals("null") || value.trim().equals(""));
}
非常好,兄弟! – 2017-12-21 06:03:26
如果返回value
为null,用途:
if(value.isEmpty());
有时在java中检查null,if(value == null)
,即使String为null,它也可能不成立。
使用Scala(与Java)'if(value.isEmpty())'给出'NullPointerException'。在这种情况下,使用'if(value == null)'更好' – 2017-06-06 15:07:09
这绝对是错误的,因为如果它为空,它总会抛出NPE。 – Roger 2018-01-05 21:11:59
- 1. 在android中检查null字符串
- 2. Struts2,字符串null检查
- 3. 如何在java中检查字符串与字符串数组?
- 4. 如何在Java中检查字符串特殊字符
- 5. 如何在Java中检查字符串的字符集?
- 6. NSPredicate检查NULL,并在Core Data中检查空字符串
- 7. 在Java中检查字符串格式?
- 8. 如何检查Java字符串中的连续双字符
- 9. 如何使用零字符RegEx检查Java中的字符串?
- 10. Java - 如何检查字符串中的重复字符?
- 11. 如何检查字符串中的所有字符是用java
- 12. Java字符串检查
- 13. 如何从json字符串中检查null
- 14. 检查字符串中是否存在字符串java
- 15. 如何在java中检查对象是字符串还是字符串数组?
- 16. 如何检查字符串是否在字符串列表中
- 17. 如何检查字符串
- 18. 如何在JAVA中检查字符串是否不相等?
- 19. 如何检查文件字符串路径在java中有效
- 20. 如何检查字符串的多个可能值在Java中
- 21. 在Java中检查字符串中的字符
- 22. 如何检查字符的字符串?
- 23. 在Java中检查NULL
- 24. 如何检查java中字符串中存在的错误字符
- 25. 在字符串中的Java null char字符串
- 26. 检查Java中的空字符串
- 27. 检查字符串中的Java
- 28. Java,Telnet,检查InputStream中的字符串
- 29. 检查字符串中的Java的
- 30. 检查字符串中的短语 - Java
@ k38:如果你想比较**值**,那么你“only”必须使用'equals()'。但是,如果你想检查一个变量是否为'null',则使用'=='。 – 2010-05-27 11:16:50