A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© s476596497 中级黑马   /  2014-1-21 08:25  /  1983 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 s476596497 于 2014-1-21 11:45 编辑

请问一下数组的空间是连续的吗?如果我在数组中存入一个null值,遍历数组时会不会出现空指针异常?

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

4 个回复

倒序浏览
  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

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

回复 使用道具 举报
数组是一段分配固定长度的连续空间,其中的值根本就不能为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.         }
复制代码


评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

回复 使用道具 举报
dapeng111 发表于 2014-1-21 09:13
1、数组的空间一定是连续的。
2、存入空指针异常。不存数,默认初始化的话,值为0 ...

再怎么转,还是有异常,哥们你不报异常吗
回复 使用道具 举报
本帖最后由 dapeng111 于 2014-1-21 15:20 编辑
泮和顺 发表于 2014-1-21 14:31
再怎么转,还是有异常,哥们你不报异常吗

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