我的天啊。我有一个小项目要做,琴弦正在杀死我!
现在,我有一个字符串,它是null
(从Servlet调用getParameter()
时获取了值)。
问题是,我试图查看它是否为null,即使它为null,在程序中告诉我不是null
,而是在程序后面,当我使用变量时,我收到了异常例外,该变量为null
。
System.out.println("In " + ID); // in console: In null
if ((ID == null) || (ID == "null") || ID.equals(null) || **ID.equals("null")**)
{
// after I put the 4th condition, the if is working right (WHAT IS THE PROBLEM?)
System.out.println("==null");
this.ID = "";
}
else
{
System.out.println("!=null");
this.ID = ID;
}
System.out.println("After " + ID);
我做错了什么?
只有第四种条件有效!剩下的怎么样(第二个除外,因为我因为绝望而把它放在那儿)
我教过
ID == null
或ID.equals(null)
可以,但是没有。编辑:
问题是,我从表单(通常说表单1)获取ID的值。但是在这种情况下,我使用的表单2没有任何ID输入,因此ID必须为
null
而不是"null"
最佳答案
由于您是从Servlet获取字符串的,所以我可以说这很正常。
Java在某些情况下会将空字符串转换为“空”字符串。
显然,您检索的字符串不是null值,而是4个字符的字符串“ null”
您为什么不尝试调试?或者只是看看这返回什么:
System.out.println("Length of ID: " + ID.Length);
编辑:如果您在这里没有异常,这意味着该字符串不为null,并且还会输出“ ID的长度:4”,这意味着该字符串实际上是ID =“ null”
EDIT2:好吧,似乎有些人不明白这里发生了什么,他们说在Java中的某些情况下,如何将空字符串变为“ null”?他们发现它是rididiculus。我希望他们在Java上尝试一下:
String abc = null;
String xyz = "hello";
System.out.println(xyz + abc);
输出将是“ hellonull”。
同样在这里,我们有一个servlet。数据为空。 Servlet将空数据发送为“ null”,该怎么办?空字符串?来吧!!! ”