黑马程序员技术交流社区
标题:
null和空的问题
[打印本页]
作者:
李敬
时间:
2012-8-25 15:34
标题:
null和空的问题
如果说让你定义个一null的数组,你会怎么定义
是这么定义
int[] arr = null;
还是
int[] arr = new int[]{};
这里不太理解null和没有数据的数组有什么区别,内存中是什么样子的呢?
作者:
刘源
时间:
2012-8-25 15:38
数组定义为{} 给它分配了一个内存空间
但是数组定义位 null的话 则只是 定义了一个指针
内存分为堆和笺 嘛
指针只存在于堆中 而不存在于 笺
堆中用于存放指针 笺中用于存放值
作者:
杨鹏鹏
时间:
2012-8-25 15:48
int[] arr = new int[]{};
System.out.println(arr[0]);
报错:java.lang.ArrayIndexOutOfBoundsException: 0 数组角标越界
int[] arr1=null;
System.out.println(arr[0]);
报错:java.lang.NullPointerException 空指针
作者:
郗绿阳
时间:
2012-8-25 15:51
null指的是一个什么都不存在的一个特殊的值,什么都不存在但是他还是有值的只有一个指针
空指的是这个量暂时什么都没有
作者:
廉伟
时间:
2012-8-25 15:51
我会用
int [] arr = {};
int [] arr = new [];
这样的都输出的是null
作者:
孔肖
时间:
2012-8-25 15:58
如果定义成 int[] arr = null; 表示该数组在内存中没有指向,调用 arr.toString(); 来看一下, 会发生 NullPointerException。
如果定义成int[] arr = new int[]{}; 表示在内存中会为数组开辟一块空间,调用它的 arr.toString(); 为 [I@c17164,并且 arr.length; 为0
作者:
魏-玉-彪
时间:
2012-8-25 19:21
定义个一null 的数组,应当是指数组中的没有元素,也就是 0个元素
int [] arr = {};
int [] arr = new [];
这样既可,
nt[] arr = null 这样定义数组没用意义,因为,数组是引用类型数据,这样定义,Java内存回收机制会回收这段内存,出现java.lang.NullPointerException 空指针异常。
作者:
尤洋
时间:
2012-8-26 10:22
int[] arr = null; 这里arr 这里数组为空 引用变量没有任何指向,一旦调用它,就会出现空指针异常
int[] arr = new int[]{}; 这里arr并不为空, 只是new的数组没有值,仅仅进行了默认初始化,而数组属于引用数据类型,初始化的值为null。
作者:
张飞年
时间:
2012-8-26 19:54
刘源 发表于 2012-8-25 15:38
数组定义为{} 给它分配了一个内存空间
但是数组定义位 null的话 则只是 定义了一个指针
内存分为堆和笺 嘛
我怎么记得栈中存的是指针,堆中存的是数值呢
作者:
吴通
时间:
2012-8-26 20:23
int[] arr = null;
说明没有分配空间,只是定义了一个指针,
int[] arr = new int[]{};
说明内存中定义了一个内存空间
还有区别就是
如果类定义为空的话,那么他就不能调用里面的方法
而int[] arr = new int[]{};能够调用方法
作者:
黑马-李勇
时间:
2012-8-26 23:53
int[] arr=null 虚拟机应该会回收吧。
int[] arr=new int[]{} 虚拟机应该不会回收吧。new了一个空间,而且arr指向这个地址。
我认为栈里面一定是指针, 栈会溢出。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2