用于字符串长度的Java NPE

时间:2013-08-04 07:11:37

标签: java string nullpointerexception

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是不对的? 谁能告诉我为什么?

5 个答案:

答案 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_contentnull,因此在其上调用.length()就像调用null.length()一样,这会导致NullPointerException。为了不发生这种情况,您必须对其进行初始化:

temp_context = "";

要确定String是否为null,您可以使用:

if (temp_content == null)

答案 3 :(得分:1)

因为temp_contentnull,并且您在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。