java 数组基础问题

[复制链接]
查看11 | 回复10 | 2011-10-30 11:29:07 | 显示全部楼层 |阅读模式
判断两个数组是否相等publicclassArrayEqualsis2{publicstaticbooleanisequals(int[]a,int[]b){if(a.length==b.length){for(inti=0;ia.length;i){if(a==b){returntrue;}}}returnfalse;}publicstaticvoidmain(String[]args){int[]a=null;int[]b=null;System.out.println(isequals(a,b));}}为什么这种情况下运行结果是Exceptioninthread\"main\"java.lang.NullPointerExceptionatlesson4.ArrayEqualsis2.isequals(ArrayEqualsis2.java:7)atlesson4.ArrayEqualsis2.main(ArrayEqualsis2.java:26)咋回事啊??搞不懂~~~
回复

使用道具 举报

千问 | 2011-10-30 11:29:07 | 显示全部楼层
你main方法里定义:int[]a=null;int[]b=null;都没有赋值,然后在isequals()方法里面:if(a==b)比较元素,这样是会报空指针异常的,要在main方法定义数组的时候给它赋值了,后面才能用它里面的元素追问空指针?异常?java里面没有指针吧???
回复

使用道具 举报

千问 | 2011-10-30 11:29:07 | 显示全部楼层
怎么跟你解释呢,,就是说数组里面没有赋值,没有元素,而你要调用一个空的引用,所以报空指针异常,你把你的a和b数组赋点值看看就明白了比如int[]a=newint[]{1,2,3,4,5,6,7,8};int[]b=newint[]{1,2,4,5,6,8};
回复

使用道具 举报

千问 | 2011-10-30 11:29:07 | 显示全部楼层
赋值了后是肯定没问题!!问题的重点是:我就想知道两个数组都是null的时候;为什么会出现这个问题!!你就给仔细说说呗
回复

使用道具 举报

千问 | 2011-10-30 11:29:07 | 显示全部楼层
null就是空的意思啊,里面什么都没有,然后你去调用它的元素,肯定出异常了
回复

使用道具 举报

千问 | 2011-10-30 11:29:07 | 显示全部楼层
在问题补充里我第二个程序加入了数组为null的情况,运行结果怎么还是一样??
回复

使用道具 举报

千问 | 2011-10-30 11:29:07 | 显示全部楼层
还是空指针异常
回复

使用道具 举报

千问 | 2011-10-30 11:29:07 | 显示全部楼层
汗~~~难道就说不出个一二三来吗??
回复

使用道具 举报

千问 | 2011-10-30 11:29:07 | 显示全部楼层
我知道你的意思,如果加入if(a==null||b==null)这句判断语句,结果会怎么样。。。其实程序根本运行不到这里,在if(a.length==b.length)这里已经出异常了,如果你要加,应该把if(a==null||b==null)这句判断语句加到if(a.length==b.length)的前面去
回复

使用道具 举报

千问 | 2011-10-30 11:29:07 | 显示全部楼层
int[]a=null;int[]b=null;//实例化数组!int[]a=newint[10];int[]b=newint[10];//改成这个试试!追问改成这个肯定没问题,但是我就想知道,两个数组都为null的时候,为什么结果是这个样的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行