所以我和一个熟人打了个赌。这是关于使用 Java 进行开发时需要更多空间的问题。
ArrayList<Player>
在使用 Bukkit (Minecraft) API 进行编码时,玩家包括位置、库存、健康栏、食物等级、xp 等级等等。然而,字符串只是字符的汇编。 这就是为什么我认为
ArrayList<String>
如果你只需要玩家的名字,会比带有玩家的 ArrayList 更令人愉快。
我的熟人告诉我关于对象引用的事情,并且意味着这将是完全相同的事情,因为我通过这样做获得了玩家的名字
player.getName();
并且由于“对象引用”的存在,不会占用更多的空间或处理能力。
哪个论点是正确的?
最佳答案
假设内存中的其他位置已经有了 Player
实例,并且您要将这些现有对象添加到此列表中,那么结果是一样的:两者都是对象引用列表(对于 String
或 Player
)。对象引用很小( see this answer for details ,但我们谈论的是 32 或 64 位)。这里的关键是,如果您已经有Player
实例,那么添加对它们的第二个引用是很便宜的;它不会创建对象的副本,只是复制很小的引用。
当然,如果您没有已经有 Player
实例并且只是为此列表创建它们,并且这些实例将包含名称和其他信息,那么当然会占用更多内存。
关于java - 对象引用 - 什么需要更多空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27796226/