java - 对象引用 - 什么需要更多空间?

标签 java object reference

所以我和一个熟人打了个赌。这是关于使用 Java 进行开发时需要更多空间的问题。

ArrayList<Player>

在使用 Bukkit (Minecraft) API 进行编码时,玩家包括位置、库存、健康栏、食物等级、xp 等级等等。然而,字符串只是字符的汇编。 这就是为什么我认为

ArrayList<String>

如果你只需要玩家的名字,会比带有玩家的 ArrayList 更令人愉快。

我的熟人告诉我关于对象引用的事情,并且意味着这将是完全相同的事情,因为我通过这样做获得了玩家的名字

player.getName();

并且由于“对象引用”的存在,不会占用更多的空间或处理能力。

哪个论点是正确的?

最佳答案

假设内存中的其他位置已经有了 Player 实例,并且您要将这些现有对象添加到此列表中,那么结果是一样的:两者都是对象引用列表(对于 StringPlayer)。对象引用很小( see this answer for details ,但我们谈论的是 32 或 64 位)。这里的关键是,如果您已经Player实例,那么添加对它们的第二个引用是很便宜的;它不会创建对象的副本,只是复制很小的引用。

当然,如果您没有已经有 Player 实例并且只是为此列表创建它们,并且这些实例将包含名称和其他信息,那么当然会占用更多内存。

关于java - 对象引用 - 什么需要更多空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27796226/

相关文章:

java - 注入(inject)功能的方式(类似于动态代理但侵入性较小)

Scala 中的 JavaFX 找不到启动方法

java - 如何覆盖客户端 Soap 日志记录 - Spring Boot

javascript - 过滤对象数组返回空数组

C++ 函数返回 NULL 字符串引用

java - Swift 快速排序算法

c - nm 实用程序输出中符号大小的输出格式是什么

java - 什么时候声明对象?

c++ - const 参数 vs const 引用参数

java - 我如何确定何时可以重用对象?