繁体   English   中英

java设置array1 = tempArray

[英]java setting array1 = tempArray

我是学习Java的C ++程序员。 在一种方法中,我想执行以下操作,获取当前对象[称为array1]内部存在的对象数组,然后将其替换为另一个数组[tempArray](以C ++代码形式的示例)

$ ...
$15  private void replaceArray(){
$16      // exchanging values tempArray also has been generated in this omitted section
$17      delete[] array1;
$18      array1 = tempArray;
$19 }
$ ...

我遇到的问题是Java中并不真正存在关键字“删除”。 所以我的问题是,如果我只做...

$ ...
$15 private void replaceArray(){
$16     // exchanging values tempArray also has been generated in this omitted section
$17      array1 = tempArray;
$18 }
$ ...

原始array1是否仍然存在而没有指针可以访问它,或者将由Java的托管代码环境来处理(是的,我知道指针仍然存在,但是java虚拟机仅管理它们。)触摸它们)?

与数组的直接关联类似于将指针复制到新变量。

如果您对tempArray有另一个var并修改了任何值,则还可以修改array1。

但是,如果没有对该数组的引用,JVM将负责内存。

同样,复制数组的更好方法是对其进行克隆()。

垃圾收集器将负责清理。 从c ++到java,这和缺少析构函数的区别可能是最明显的区别。 您还需要对每个对象都是指针达成共识-除了内置的简单类型和指针,您什么都不能放。

在array1指向tempArray之后,您将不再能够将其重新分配为其先前的值。 (假设没有其他引用它)直到JVM进行垃圾回收以释放内存之前,array1最初指向的对象仍将存在于内存中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM