java如何释放int数组空间 10
比如一个数组中有多个相同的值要将他们删除只剩一个,那些被删除的要求被释放。。arry[arry.length-1]=null;直接赋空值会报错。。。...
比如一个数组中有多个相同的值要将他们删除只剩一个,那些被删除的要求被释放。。arry[arry.length-1]=null;直接赋空值会报错。。。
展开
展开全部
想得倒是美,不过连JAVA最基本的数据类型与数组都不太理解吧你,JAVA内存机制也没了解过?
如果你这个arry是int类型的,则只可能是arry[arry.length-1]=0;而不可能是arry[arry.length-1]=null;
因为arry[arry.length-1]这个表示取得这个数组的第arry.length-1个元素,也就是,这个元素一定是int类型,int类型的变量只能赋值为int类型的值-2^16~2^16,只有引用或数组才可以“赋值”为null,表示此时不指向任何对象。
如果以JAVA内存的角度来讲:
栈内存放的是引用,堆内存放的是对象,比如int arry=new int[10];此时array是压入栈内存,而后面new出来的数组对象则是直接放入堆内存里。基本数据类型,如int,float,char等,如果不是作为一个类的属性,将直接被压入栈内存。栈内存一般速度比较快,当执行完运算(也就是一个类的方法)后,将立马释放,而堆内存则是由垃圾回收机自动管理的,当没有引用指向对象的时候,将被自动回收。
所以,你想完成这样的arry[arry.length-1]=null;功能,首先,必须重新开辟数组,数组大小然后将不重复的数组元素放入新数组即可。或者,只能arry[arry.length-1]=0;
如果你这个arry是int类型的,则只可能是arry[arry.length-1]=0;而不可能是arry[arry.length-1]=null;
因为arry[arry.length-1]这个表示取得这个数组的第arry.length-1个元素,也就是,这个元素一定是int类型,int类型的变量只能赋值为int类型的值-2^16~2^16,只有引用或数组才可以“赋值”为null,表示此时不指向任何对象。
如果以JAVA内存的角度来讲:
栈内存放的是引用,堆内存放的是对象,比如int arry=new int[10];此时array是压入栈内存,而后面new出来的数组对象则是直接放入堆内存里。基本数据类型,如int,float,char等,如果不是作为一个类的属性,将直接被压入栈内存。栈内存一般速度比较快,当执行完运算(也就是一个类的方法)后,将立马释放,而堆内存则是由垃圾回收机自动管理的,当没有引用指向对象的时候,将被自动回收。
所以,你想完成这样的arry[arry.length-1]=null;功能,首先,必须重新开辟数组,数组大小然后将不重复的数组元素放入新数组即可。或者,只能arry[arry.length-1]=0;
展开全部
对于int数组,从初始化完,内存就分配完了,无法单独释放的。再说,int大不到哪里去的。
你的做法只对对象数组有效。
你的做法只对对象数组有效。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据类型不一样,int数组赋值null,肯定会报错哦。一开始数组初始化了多少就定义了多大的内存,要释放的话建议用List数据格式。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int固定长度而且是基本类型,不能赋值null,要么你用集合来存,要么用Integer存在数组里面赋值null,遍历时做判断排除掉null
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你需要给它赋值啊。不然会空指针。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询