空指针异常

时间:2013-05-03 16:57:55

标签: java arrays runtime-error

FavPic是一个存储有图片元素的数组,我试图将变量pRef设置为等于该数组元素。相反,我不断收到Null Pointer Exception崩溃。究竟什么是空指针异常,以及这几行代码如何导致这样的事情呢?谢谢!

   public void setFavouritePicture (Picture pRef)
  {
    pRef = favPic[0];
   }

4 个答案:

答案 0 :(得分:0)

NullPointerException表示您试图在引用null(更常见)的对象引用上调用方法,或者像这里一样,尝试引用数组的特定元素提到null

只需要2行代码就可以生成一个NullPointerException - 一个引用一个引用变量,使其为null,另一个代码尝试对它执行某些操作。

在使用之前,您必须创建数组以对其进行初始化。

答案 1 :(得分:0)

当某些内容为null或未定义时,将调用NullPointerException。您要么尝试从未声明的数组中获取值,要么尝试从尚未定义的数组中获取值。

例如,如果我的int[]包含1,2和3,并且我尝试说System.out.println(int[3]),那么它将无效,因为没有值。

运行以下检查,让我知道你得到了什么:

System.out.println(favPic == null);

System.out.println(favPic[0] == null);

答案 2 :(得分:0)

当您尝试访问值为null的对象时(可能未对属性进行初始化,或者可能会手动为其分配值null)。

在您的情况下,数组favPic可能是null,因此当您尝试使用favPic访问favPic[0]的第一个值时,它会失败并抛出{{1} }}

答案 3 :(得分:0)

main中,你应该有类似的东西

Picture[] favPic = new Picture [1];// 1 is the number of pics
favPic = setFavouritePicture(favPic);

并且您的setFavouritePicture方法看起来应该是这样的

public static Picture[] setFavouritePicture (Picture[] pRef){
    for (int i = 0; i < pRef.length; i++) {
        pRef[i] = new Picture();
    }
    pRef[0] = ... ; // "..." is your picture
    return pRef;
}