数组定义为{}与null 有区别吗 数组定义为{}与null 有区别吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 {}:分配内存空间;null : 不分配内在空间。 {}意思是已经分配一个空间,就是说实例化了,null 没有实例化,不指向任何对象,没分配空间 对,{}这个是分配了空间的,引用指向了内存的一段空间,而赋值为null的话,引用就没有指向内存空间,没有分配空间 有区别的确实{}分配了空间起码是对数组这个对象本身分配了null没有分配只是定义了一个符号罢了。 int []x={};System.out.println(x==null);//false 数组定义为{} 给它分配了一个内存空间但是数组定义位 null的话 则只是 定义了一个指针内存分为堆和笺碱 嘛指针只存在于堆中 而不存在于 笺 堆中用于存放指针 笺中用于存放值 有区别的 确实{}分配了空间 起码是对数组这个对象本身分配了 null没有分配 只是定义了一个符号罢了。 有区别的 确实{}分配了空间 起码是对数组这个对象本身分配了 null没有分配 {}:给数组分配了内存空间,但是这个数组是空的,没有任何元素;null : 不分配内在空间,只是声明了一个可以指向数组的引用。 请参看我的示例代码//:TestArray.javapublic class TestArray { public static void main(String[] args) { int[] a = {}; int[] b = null; try { System.out.println("{ }分配内存\ta.length="+a.length); } catch(Exception e) { System.out.println("{ }没有分配内存"); } finally { try { System.out.println("null分配内存\tb.length="+b.length); } catch(Exception e) { System.out.println("null没有分配内存"); } } }}运行结果为:{ }分配内存 a.length=0null没有分配内存 怎么说没区别?区别大了!一个是数组,一个是null!int[] arr = { };对它做范围内遍历,不可能抛出异常,而如果int[] arr = null;异常就抛出来了。 Integer i = null;Integer i = 0;有区别吗? int[] arr = { }; 给了你遥控器,也给了电视你 | | 遥控器 电视int[] arr = null; 给了你遥控器,没有给电视你 | 遥控器总结:你连电视都没有,你拿“遥控器”是没有用的 是有区别的,一个已经实例化了一个数组,而另一个没有实例化,对null数组求长度会抛出空指针异常的 null时不分配内在空间,只是声明了一个可以指向数组的引用。 有区别,{}有分配地址,null没有分配。你可以试试就看到结果了,如 String []aa={"a","b","c"}; String []bb=null; int i= aa.length; int j =bb.length;编译应该没问题,你运行看看呢。多动手就发现了。 int[] array1 = null;只是在栈中声明了一个引用.堆中并未分配内存空间.int[] array2 = {};在栈中声明了一个引用.堆中并分配内存空间,但是并未存放具体内容. {}意思是已经分配一个空间,就是说实例化了,null 没有实例化,不指向任何对象,没分配空间 int[] x = {};int[] y = null;System.out.println("x.length=" + x.length);//x.length=0System.out.println("y.length=" + y.length);// 抛出java.lang.NullPointerException {}:分配内存空间有指向得引用null : 不分配内在空间 这是什么错误 setLookAndFeel如何设置它的参数 c#转JAVA,推荐入门书 希望大家可以帮我看看这个程序 新手请教JavaSE学习方法问题 急!!!!急!!! 请教个Properties的问题 收到了一张OFFER,开心散分 请教一个 JavaScript 的问题。 谢谢大家 一个奇怪的问题? 这应该如何测试呢?进来都谈谈 渴望高手指点
null : 不分配内在空间。
对,{}这个是分配了空间的,引用指向了内存的一段空间,而赋值为null的话,引用就没有指向内存空间,没有分配空间
确实{}分配了空间
起码是对数组这个对象本身分配了
null没有分配
只是定义了一个符号罢了。
System.out.println(x==null);//false
但是数组定义位 null的话 则只是 定义了一个指针
内存分为堆和笺碱 嘛
指针只存在于堆中 而不存在于 笺
堆中用于存放指针 笺中用于存放值
确实{}分配了空间
起码是对数组这个对象本身分配了
null没有分配
只是定义了一个符号罢了。
确实{}分配了空间
起码是对数组这个对象本身分配了
null没有分配
null : 不分配内在空间,只是声明了一个可以指向数组的引用。
//:TestArray.java
public class TestArray {
public static void main(String[] args) {
int[] a = {};
int[] b = null;
try {
System.out.println("{ }分配内存\ta.length="+a.length);
} catch(Exception e) {
System.out.println("{ }没有分配内存");
} finally {
try {
System.out.println("null分配内存\tb.length="+b.length);
} catch(Exception e) {
System.out.println("null没有分配内存");
}
}
}
}运行结果为:
{ }分配内存 a.length=0
null没有分配内存
int[] arr = { };
对它做范围内遍历,不可能抛出异常,而如果
int[] arr = null;
异常就抛出来了。
Integer i = 0;有区别吗?
| |
遥控器 电视int[] arr = null; 给了你遥控器,没有给电视你
|
遥控器总结:你连电视都没有,你拿“遥控器”是没有用的
你可以试试就看到结果了,如 String []aa={"a","b","c"};
String []bb=null;
int i= aa.length;
int j =bb.length;
编译应该没问题,你运行看看呢。多动手就发现了。
只是在栈中声明了一个引用.堆中并未分配内存空间.
int[] array2 = {};
在栈中声明了一个引用.堆中并分配内存空间,但是并未存放具体内容.
int[] y = null;
System.out.println("x.length=" + x.length);//x.length=0
System.out.println("y.length=" + y.length);// 抛出java.lang.NullPointerException
null : 不分配内在空间