黑马程序员技术交流社区

标题: 数组问题 [打印本页]

作者: s476596497    时间: 2014-1-21 08:25
标题: 数组问题
本帖最后由 s476596497 于 2014-1-21 11:45 编辑

请问一下数组的空间是连续的吗?如果我在数组中存入一个null值,遍历数组时会不会出现空指针异常?
作者: dapeng111    时间: 2014-1-21 09:13
  1. public class NullPoint {

  2.        
  3.         public static void main(String[] args) {
  4.                
  5.                 int[] arr = new int[3];

  6.                 for(int i = 0; i<=arr.length; i++)//如果没有这个for循环的话,在建立数组对象的时候会有默认初始化值0
  7.                 {
  8.                         arr[i] = (Integer) null;//数组是引用类型,不能直接把null赋给arr[i],要转化为Integer类型。运行会有空指针异常
  9.                 }
  10.                
  11.                 for(int i : arr)
  12.                 {
  13.                         System.out.println(arr[i]);
  14.                 }
  15.         }

  16. }
复制代码
1、数组的空间一定是连续的。
2、存入空指针异常。不存数,默认初始化的话,值为0
作者: ↑↓ME→←    时间: 2014-1-21 10:07
数组是一段分配固定长度的连续空间,其中的值根本就不能为null,如要存储,必须转化成对象,但还是会出现空指针异常。
  1. public static void main(String[] args) {
  2.                 int[] arr = new int[4];
  3.                 arr[0]=(Integer) null;//去点Integer会报异常
  4.                 System.out.println(arr[0]);//输出会出现NullPointException
  5.         }
复制代码



作者: 泮和顺    时间: 2014-1-21 14:31
dapeng111 发表于 2014-1-21 09:13
1、数组的空间一定是连续的。
2、存入空指针异常。不存数,默认初始化的话,值为0 ...

再怎么转,还是有异常,哥们你不报异常吗
作者: dapeng111    时间: 2014-1-21 15:19
本帖最后由 dapeng111 于 2014-1-21 15:20 编辑
泮和顺 发表于 2014-1-21 14:31
再怎么转,还是有异常,哥们你不报异常吗

有异常的兄弟,有异常就对了。因为数组是引用类型的。楼主说的是在数组中存入null类型,可是null不能直接赋给数组中的元素,所以就要转换一下,用语句arr = (Integer) null; 这时才没有语法错误。数组中现在为null不可能用for得出结果,会报NullPointerException.你将数赋给数组中的每一个元素就不报异常了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2