
java数组调用问题
类中有一个静态成员变量(数组),此类中的某类方法a已经对其进行初始化和赋值。在main方法中先调用类方法a,再调用这个数组的时候却提示空指针异常。求解释。代码如下:cla...
类中有一个静态成员变量(数组),此类中的某类方法a已经对其进行初始化和赋值。在main方法中先调用类方法a,再调用这个数组的时候却提示空指针异常。求解释。
代码如下:
class Ts{
public static int a[];
public static void Inita(){
int a[]=new int[3];
a[0]=1;
a[1]=2;
a[2]=3;
}
public static void main(String args[]){
Inita();
System.out.println(a[2]);
}
}
提示运行时异常:空指针异常。 展开
代码如下:
class Ts{
public static int a[];
public static void Inita(){
int a[]=new int[3];
a[0]=1;
a[1]=2;
a[2]=3;
}
public static void main(String args[]){
Inita();
System.out.println(a[2]);
}
}
提示运行时异常:空指针异常。 展开
4个回答
展开全部
建议你去看一看局部变量和全局变量的作用域,
你就可以发现
public static void Inita(){
int a[]=new int[3];
a[0]=1;
a[1]=2;
a[2]=3;
}
这里面的数组a是局部变量,和上面的static的a并非同一个数组,也就是说,你的static数组并没有初始化。理所当然出现空指针异常。
你就可以发现
public static void Inita(){
int a[]=new int[3];
a[0]=1;
a[1]=2;
a[2]=3;
}
这里面的数组a是局部变量,和上面的static的a并非同一个数组,也就是说,你的static数组并没有初始化。理所当然出现空指针异常。
更多追问追答
追问
需要加this关键字是吗?
追答
int a[]=new int[3];
把这一句改成 a[]=new int[3];就ok了
展开全部
你这是必然的啊,main函数里面打印出来的是静态数组里面的,但是你的inita方法里面创建的数组a却不是在操作静态数组a,你重新新建了局部变量
追问
需要加this关键字是吗?
追答
对,加this就都是在操作静态变量了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看代码吧, 重复定义数组造成
public static int a[];
public static void Inita(){
int a[]=new int[3];//这行前面的int删除
public static int a[];
public static void Inita(){
int a[]=new int[3];//这行前面的int删除
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class Ts{
public static int a[];
public static void Inita(){
a=new int[3];
a[0]=1;
a[1]=2;
a[2]=3;
}
public static void main(String args[]){
Inita();
System.out.println(a[2]);
}
}
public static int a[];
public static void Inita(){
a=new int[3];
a[0]=1;
a[1]=2;
a[2]=3;
}
public static void main(String args[]){
Inita();
System.out.println(a[2]);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询