cc.*_*cc. 2 java string null nullpointerexception
我的天啊.我有一个小项目要做,字符串正在杀了我!
现在,我有一个String null(取自getParameter()servlet 调用的值).
问题是,我试图看看它是否为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);
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
只有第四个条件正在发挥作用!剩下的事情(除了第二个,因为我说的这个条件是因为我绝望了)
我教过ID == null或 ID.equals(null)将会好,但不是.
编辑:
问题是,我从表单中获取ID的值(表格1通常说 - 通常).但在这种情况下,我使用的表单2没有任何ID输入,因此ID必须是null和不是"null"
Ste*_*202 10
ID.equals("null")
Run Code Online (Sandbox Code Playgroud)
显然,ID包含四个字母的字符串"null".所以它不是null("无"的价值).
有关常量的更多信息,请参阅Java词汇表null.基本上,如果变量null没有引用任何对象,则该变量具有该值.该字符串"null" 是一个对象,即String类的实例,在这种情况下,该变量ID引用该对象.
(请注意,按照惯例,Java变量以小写字母开头,而像ID这样的首字母缩略词则写得完全小写,所以写id而不是ID.)
以下是您尝试过的四项测试.第一个和第四个是你应该需要的唯一的.
ID == null :字段'ID'是否为空?ID == "null":字段'ID'的ref是否与新分配的String"null"相同?这通常应该返回false.ID.equals(null):这应该总是返回假 - 概念上这是真的,你应该抛出一个NullPointerException.ID.equals("null"):String'ID'的值是否与String"null" 的值相同?因为你从servlet获得字符串,我可以说这是正常的.
在某些情况下,Java会将空字符串转换为"null"字符串.
显然,您检索的字符串不是空值,但它是一个4字符串"null"
你为什么不试试调试?或者只是看看这回归了什么:
System.out.println("Length of ID: " + ID.Length);
Run Code Online (Sandbox Code Playgroud)
编辑:如果你没有在这里得到异常,这意味着字符串不为空,并输出"ID:4的长度"将意味着字符串真的是ID ="null"
编辑2:好吧,似乎有些人不明白这里发生了什么,他们说在一些条件下,如何将空字符串变为"空"?他们发现它是riddiculus.我更喜欢他们在java上尝试这个:
String abc = null;
String xyz = "hello";
System.out.println(xyz + abc);
Run Code Online (Sandbox Code Playgroud)
输出将是"hellonull"没有其他...
这里我们还有一个servlet.有一个空数据.Servlet将空数据发送为"null"它应该做什么?一个空字符串?来吧!!!"
| 归档时间: |
|
| 查看次数: |
2005 次 |
| 最近记录: |