FavPic 是一个数组,其中存储了一个图片元素,我试图将变量 pRef 设置为等于该数组元素。相反,我不断收到 Null Pointer Exception 崩溃。究竟什么是空指针异常,这几行代码是如何导致这样的事情的?谢谢!
public void setFavouritePicture (Picture pRef)
{
pRef = favPic[0];
}
FavPic 是一个数组,其中存储了一个图片元素,我试图将变量 pRef 设置为等于该数组元素。相反,我不断收到 Null Pointer Exception 崩溃。究竟什么是空指针异常,这几行代码是如何导致这样的事情的?谢谢!
public void setFavouritePicture (Picture pRef)
{
pRef = favPic[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;
}
NullPointerException
当某事物为空或未定义时调用A。您要么尝试从未声明的数组中获取值,要么尝试从尚未定义的数组中获取值。
例如,如果我有一个int[]
包含 1、2 和 3 的值,并且我尝试说System.out.println(int[3])
,它不会起作用,因为没有值。
运行以下检查,让我知道你得到了什么:
System.out.println(favPic == null);
System.out.println(favPic[0] == null);
ANullPointerException
表示您尝试在引用的对象引用上调用方法null
(更常见),或者像这里一样,尝试引用引用的数组的特定元素null
。
只需要 2 行代码就可以导致一个NullPointerException
- 一个声明一个引用变量,以便它是null
,另一个尝试用它做一些事情。
您必须创建数组以在使用它之前对其进行初始化。
当您尝试访问一个对象时,它的值是null
(它可能没有被属性初始化,或者它可能被手动分配了值null
)。
在您的情况下,当您尝试访问using的第一个值时,数组favPic
可能会失败并抛出。null
favPic
favPic[0]
NullPointerException