黑马程序员技术交流社区
标题:
求大神解释。。不懂
[打印本页]
作者:
sd110572
时间:
2013-12-5 22:24
标题:
求大神解释。。不懂
本帖最后由 sd110572 于 2013-12-6 09:30 编辑
在A类的对象实例化后需要对其中定义的B类实例化么?
class B
{
int n;
}
class A
{
B[] b=new B[23];
}
public class Ysumap
{
public static void main(String args[])
{
A a=new A();
a.b[0].n=1; //这里空指针异常
}
}
复制代码
此时会出现空指针异常
作者:
李文帅
时间:
2013-12-5 22:54
楼主在A类中定义了成员B类型的数组,但并没有对数组进行初始化,数组中的元素默认都为null
主函数中,若要对A类中的数组进行操作,则需要先为数组赋值,此时就需要实例化B类
楼主的程序没有对数组进行赋值,所以b[0] 为null,所以回报空指针异常
作者:
wangchao1686
时间:
2013-12-5 23:45
成员变量随着对象而存在,存在于堆内存中。堆内存的特点就是其中的元素有默认隐式的初始化。引用型数据类型的默认初始化值为null。
A a=new A();在堆内存中创建A类对象,并且建立b这个变量显式初始化为B的数组。
数组new B[23];同样也是存在于堆内存中,这个数组中的每个元素都没有被显式的初始化,当然就使用默认null喽。
因此,a.b[0]会报空指针异常。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2