我的天啊。我有一个小项目要做,琴弦正在杀死我!

现在,我有一个字符串,它是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 == nullID.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”,该怎么办?空字符串?来吧!!! ”

07-24 09:37
查看更多