java 对自定义数据类型的引用问题
publicclassExample{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubt...
public class Example {
public static void main(String[] args){
// TODO Auto-generated method stub
text mytext[]=new text[10];
for(int i=0;i<10;i++)
System.out.print(mytext[i].i+" ");
}
}
class text{
int i;
text() {i=0;}
}
请问这个例子中为什么会出现 java.lang.NullPointerException错误,我刚刚入门java,请教一下。 展开
public static void main(String[] args){
// TODO Auto-generated method stub
text mytext[]=new text[10];
for(int i=0;i<10;i++)
System.out.print(mytext[i].i+" ");
}
}
class text{
int i;
text() {i=0;}
}
请问这个例子中为什么会出现 java.lang.NullPointerException错误,我刚刚入门java,请教一下。 展开
展开全部
text mytext[]=new text[10];
你这里创建了一个长度10 的类型 text的数组,创建完成后该数组的10个元素都是null,是空的,你没有给这个数组中的元素赋值
在这种情况下你System.out.print(mytext[i].i+" ");试图打印数组中元素的i属性值,
此时的mytext[i]是null
null对象是没有i这个属性的,所以报了异常
你这里创建了一个长度10 的类型 text的数组,创建完成后该数组的10个元素都是null,是空的,你没有给这个数组中的元素赋值
在这种情况下你System.out.print(mytext[i].i+" ");试图打印数组中元素的i属性值,
此时的mytext[i]是null
null对象是没有i这个属性的,所以报了异常
追问
我在后面加了一句
for(int i=0;i<10;i++)
mytext[i]=new text();
果然就ok了,刚开始还认为new text[]自己会实例化呢。
追答
只有原生数据类型的数组在初始化的时候有默认值,其他类型的数组初始化之后里面的内容都是null
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询