请问为什么这样写是错误的!

cqfirst 2008-02-28 10:51:38
public class Array1
{ int[] a;
public void printt(){
int[] a=new int[]{1,2,3};
for(int x=0;x<a.length;x++)
System.out.println("seconddb create:"+a[x]);
}

public static void main(String[] args)
{
Array1 a2=new Array1();
a2.printt();
System.out.println("OK !!!");
}
}
------------------正确-----的写法-----
public class Array1
{ int[] a;
Array1(){
int[] a=new int[]{1,2,3};
}
public void printt(){

for(int x=0;x<a.length;x++)
System.out.println("seconddb create:"+a[x]);
}

public static void main(String[] args)
{
Array1 a2=new Array1();
a2.printt();
System.out.println("OK !!!");
}
}
--------错误的写法-------------
----------------------------------请问为什么这样写是错误的!
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ninesea 2008-02-29
  • 打赏
  • 举报
回复
public   class   Array1 
{ int[] a;
Array1(){
int[] a=new int[]{1,2,3}; //把这里的int[]去掉
}
public void printt(){

for(int x=0;x <a.length;x++)
System.out.println("seconddb create:"+a[x]);
}

public static void main(String[] args)
{
Array1 a2=new Array1();
a2.printt();
System.out.println("OK !!!");
}
}
lenovoFerly 2008-02-29
  • 打赏
  • 举报
回复
哎~~
shadow55 2008-02-28
  • 打赏
  • 举报
回复
你的类变量没有初始化,只是初始化了构造函数里面的局部变量!所以才会空指针错误
xc_wangwang 2008-02-28
  • 打赏
  • 举报
回复
因为printt()里的变量a,
是类变量a,
而Array1() {
int[] a = new int[] { 1, 2, 3 };
}里的a是在局部定义的变量a,它的生存周期只在这个方法体里,
两个a并非同一个,所以java.lang.NullPointerException;
mithrilon 2008-02-28
  • 打赏
  • 举报
回复
Array1(){
int[] a=new int[]{1,2,3};
}

这部分是在构造方法里定义了一个局部变量叫a,这个不是类变量a,所以print方法里的a是空值

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧