Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java a[2]=a[a.length]删除数组中的2个_Java_Arrays - Fatal编程技术网

Java a[2]=a[a.length]删除数组中的2个

Java a[2]=a[a.length]删除数组中的2个,java,arrays,Java,Arrays,当我在Java中使用上述代码时,它会删除数组a的索引2。从inteliJ调试器中,我再也看不到它了。从[1]到[3],再到[4]等等 a是泛型数组。如果我编码 a[2] = a[a.length-1] 如果7是a.length-1,则它会按预期复制值如果是对象数组,则可能会使旧的a[2]无效,但它仍然指向一个对象,因此不会被删除。您需要分配给null才能真正删除它,即使这不能保证快速删除,您也需要触发垃圾收集。即使这样也不能保证您的数据确实从内存跟踪中删除。其他一些应用程序需要将该区域用于c

当我在Java中使用上述代码时,它会删除数组a的索引2。从inteliJ调试器中,我再也看不到它了。从[1]到[3],再到[4]等等

a
是泛型数组。如果我编码

a[2] = a[a.length-1] 

如果7是a.length-1,则它会按预期复制值

如果是对象数组,则可能会使旧的a[2]无效,但它仍然指向一个对象,因此不会被删除。您需要分配给null才能真正删除它,即使这不能保证快速删除,您也需要触发垃圾收集。即使这样也不能保证您的数据确实从内存跟踪中删除。其他一些应用程序需要将该区域用于calloc/new并清除该区域(可能不用于服务器)


InteliJ调试器必须跟踪一个常量索引。当您给出一个变量索引并使旧的无效时,它失败了。正如C++的自动矢量化失败一样。有时调试器也会有bug(这在某些时候并不罕见)

没有删除数组索引,也没有删除任何内容。它只是将数组的最后一个元素分配到第二个元素中。还有,问题是什么?它将数组的最后一个元素
a
放在索引2中。您可以向我们解释一下,在这种情况下,您对术语“delete”的理解是什么。(这听起来像是调试器中的问题,而不是Java中的问题。)
a[2] = a[7]