我正在制作一款游戏,我需要告诉有多少辆汽车正在联系玩家的汽车,以及哪些汽车。我的计划是创建一个List
,并在必要时添加和删除汽车。
这是我的问题。我的Car
类创建非常昂贵(处理能力强)。为汽车创建参考的成本有多高?我在C ++中知道我所说的是一个指针。这是代码中的一个例子:
Car newCar = new Car(); // expensive
Car carCopy = newCar.clone(); // expensive
Car referenceNewCar = newCar; // expensive?
referenceNewCar
应该指向内存中与newCar
相同的位置,对吗?因此,它不必初始化任何内容,并且newCar.changeMemberVariableTo(1)
与referenceNewCar.changeMemberVariableTo(1)
相同;无论哪种方式,newCar
和referenceNewCar
都受到影响,因为它们指向内存中的相同位置。
我认为创建新引用比使用全新Car
更便宜。它快多少?如果创建一个新的Car
需要3秒钟,那么创建对同一辆车的新引用几乎是即时的?
提前致谢。
答案 0 :(得分:2)
将引用从一个变量复制到另一个变量非常便宜。它可能与复制int
或long
值一样便宜(取决于有关JVM的一些事情)。
你所拥有的只是两个具有完全相同值的变量 - 一个参考。该值将非常小(在大多数实现中为4或8个字节),复制它通常不需要比复制字节更多的努力。
(我有点怀疑某些 JVM可能比这更聪明;为了垃圾收集,有些JVM可能会更新有关最老一代的JVM例如,对某个特定对象的引用 - 但这会因实现而异,但无论如何我的记忆可能都是错误的。)