eclipse编译器限制数组大小能改吗
㈠ java 数组一旦被创建,大小就不能改变。为什么下面代码可以
你那相当于重新定义了一个数组。不可改变是说你往里面放值的时候,当值超过时,数据大小不能自动改变。
㈡ 请问那个数组怎么改大呀
如果数组大小需要变化,建议使用STL的容器类,如vector模板类等,可以按需分配内存空间。
普通数组无法改变其容量。如果是使用new或malloc分配的,那么可以先删除原来的数组,再重新new或malloc一个新的数组。
㈢ Java数组的长度到底能有多大
使用eclipse默认的vm arguments,运行以下代码:
public static void main(String[] args) {
byte[] array=new byte[61858764];
// short[] shortArray=new short[30929382];
// int[] intArray=new int[15464691];
// long[] longArray=new long[7732345];
}
成功,没有报错,可知在eclipse默认的vm arguments下,byte数组的最大长度是61858764,将近60M。
由于short的长度比byte大一倍,所以short数组的最大长度是30929382,是byte数组最大长度的一半,
以此类推,int数组最大长度是15464691,long数组最大长度是7732345
我以为这就是最终结果,后来突然想起修改虚拟机的最大内存,也是这个结果吗?
我把eclipse的vm arguments设置修改为:-Xms256M -Xmx768M
再次测试代码,发现byte数组的最大长度可以更长,
通过Windows任务管理器可知,运行代码的javaw.exe进程占用的内存也更大(废话,呵呵)
到此为止,应该可以得出结论,通过修改虚拟机的最大内存,java整型数组的最大长度可以很长,但到底有多长?(肯定比内存小)
我试过定义一个byte数组的长度为618587640,将近600M,没有报错,更长的数组似乎没有意义,我也没有测试。
㈣ eclipse下用java编程时的二维数组最大能达到多少
java数组用int做引索,最大容量2G=2 147 483 639个元素空间。
同时受“可用内存空间”的大小限制。
java每个对象元素实际占用内存都大于12字节,即使你有16GB内存,也不够2G个对象。
你要计算你每个对象有多大,然后计算你能分配给虚拟机多大的内存,然后根据能分配的内存调整jvm参数,这些东西最好自己实践下。
㈤ java中数组不能指定大小吗
是说=号前面的int[]不能指定大小,即不能写成int[10]之类。
㈥ “数组的大小是可变的,但所有数组元素的类型必须相同”这句话对么
取决于什么编程语言里的数组。比如:
c语言的数组大小和元素类型必须在编译期指定,一经指定不可改变。
Java语言的数组元素类型必须在编译期指定,数组大小可以运行时指定,但一经指定不可改变。
Perl/Python中的数组(列表)没有此类限制。
㈦ c语言中数组的大小可以改变吗
数组大小一旦确定就不能改变。
数组长度必须在编译时确定,可以使用malloc函数在程序运行时动态分配所需“数组”长度。定义数组需要指定数组的长度,然后系统会根据这个长度分配固定的内存大小。
当出现intarray[10];这种情况的时候,是不可以变的,这时候变量的存储空间在栈区。当intn;cin>>n;intarray=newint[n];的时候,数组可以根据n输入的大小去分配内存,这时候数组存在堆区。

(7)eclipse编译器限制数组大小能改吗扩展阅读
长度为0的数组在标准C和C++中是不允许的,如果使用长度为0的数组,编译时会产生错误,提示数组长度不能为0。但在GNUC中,这种用法却是合法的。
它的最典型的用法就是位于数组中的最后一项,这样做主要是为了方便内存缓冲区的管理。如果长度为0的数组换为指针,那么在分配内存时,需采用两步:
1、需为结构体分配一块内存空间;
2、再为结构体中的成员变量分配内存空间。这样两次分配的内存是不连续的,需要分别对其进行管理。当使用长度为0的数组时,则是采用一次分配的原则,一次性将所需的内存全部分配给它。相反,释放时也是一样的。
㈧ 数组超出限制怎么办
没办法,必须避免这种情况,尤其是写操作。。。。 两种办法,你在写代码中,主动避免写能超出限制的代码。。。
比如你写 A[i] ,你只要保证你的代码中i不会大于限制即可。。。。另一种就是自检,先判断i的大小。。。
用数组要保证数组够你使用,如果发现不够可以在申请一个数组内存,和原来的组合使用(比如数组链表,这个也比较常用,保证数组总是够长,比如写一个链表类,一旦超出就申请新的,你就不用关心这个问题了,很多智能化的高级语言的数组本身就是一个类,它能够自动调整长度)。。。当然如果你用的是C语言,可以靠代码来写一个这种功能的东西,但由于C不能运算符重载,没法让他看起来像个数组,只能是 类似 Datas(void* Array,int Index)的方式来使用数组。
可以使用数孩碃粉度莠道疯权弗护组一般是要先判断是否溢出的,可以使用realloc扩展数组大小,可以将数组存储改为链表格式存储,这样就不会受到限制了,可以用单向链表、双向链表或环形链表
