String temp_content = null;
while((line = br.readLine())!= null)
{
if(temp_content.length() == 0) /* NPE */
{
temp_content = line;
}
else
{
temp_content = temp_content+line;
}
}
我在上面指定的行上得到NullPointerException
。
使用"temp_content.length() == 0"
查明字符串是否为null
是不对的?
谁能告诉我为什么?
答案 0 :(得分:2)
您的代码应为:
String temp_content = null;
while((line = br.readLine())!= null)
{
if(temp_content == null)
{
temp_content = line;
}
else
{
temp_content += line;
}
}
使用StringBuilder
会让它变得更好:
StringBuilder temp_content = new StringBuilder();
while((line = br.readLine())!= null)
{
temp_content.append(line);
}
答案 1 :(得分:1)
temp_content
初始化为null
。确保将其初始化为空字符串以避免NPE
String temp_content = "";
答案 2 :(得分:1)
temp_content
为null
,因此在其上调用.length()
就像调用null.length()
一样,这会导致NullPointerException
。为了不发生这种情况,您必须对其进行初始化:
temp_context = "";
要确定String
是否为null
,您可以使用:
if (temp_content == null)
答案 3 :(得分:1)
因为temp_content
是null
,并且您在instance
引用上调用null
方法。
如果您想知道String是否 null ,那么您需要使用==
进行验证。
if (temp_content == null) {
System.out.println("String is null");
}
每次尝试在 null 引用上调用instance
方法时,都会抛出NPE 。
注意:在null
引用上调用静态方法时,不会抛出 NPE 。
答案 4 :(得分:0)
你应该初始化你的字符串变量,如temp =“”或temp = new temp();当你尝试在null对象中执行任何函数时,你将获得NPE。