黑马程序员技术交流社区
标题:
关于对象空间开辟
[打印本页]
作者:
up_
时间:
2012-10-25 18:17
标题:
关于对象空间开辟
定义一个数组空间,长度最大可以定义大多大,
如下代码
byte[] b=new byte[100000000000];//为什么这样写就报错
byte[] b=new byte[(int)100000000000l];
Object obj=new Object();//这样一句话默认在堆内存开辟多大空间。
作者:
程杰
时间:
2012-10-25 18:23
我觉的其实他返回的是int类型所有,数组大小根据int订的,int类型的大小事-2147483648 到2147483648 。所以你那个会报错
作者:
王禹衡
时间:
2012-10-25 18:41
数据定义的长度跟你系统栈的大小有关系,你的问题楼上说的很对,是因为int的原因。。
一个空Object对象的大小是8byte,而Object ob = new Object();
所占的空间为:4byte+8byte。4byte是Java栈中保存引用的所需要的空间。
而那8byte则是Java堆中对象的信息。
因为所有的Java非基本类型的对象都需要默认继承Object对象,因此不论什么样的Java对象,其大小都必须是大于8byte。
作者:
付维翔
时间:
2012-10-25 18:48
第一行代码错误,是超出了数组的长度的范围,最大长度为Integer.MAX_VALUE(2147483647),
而第二行为什么不出错呢,是因采用了强制类型转换,[(int)100000000000l
,使数组长度在规定的范围内,不会出数组越界的行为。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2