在Java for android中更快更有效率

Kyl*_* O. 2 java android list arraylist

说我有一个字符串列表或任何真正的.然后说我想在下一段代码中多次使用其中一个字符串.我应该创建一个新的String变量foo String foo = list.get(position)foo在以下代码中使用,还是应该保存内存空间并在list.get(position)每次需要使用该字符串时使用?或者它们实际上是同样的东西?

如果列表包含一个更复杂的类,可能会进行大量的计算来实例化或者本身有很多变量,那么答案是否会改变,因此创建一个新的类会占用大量内存?

ass*_*ias 7

该列表仅包含对其包含的项目的引用,而不包含项目本身.

编写时SomeObject s = list.get(0);,只需检索对象的引用,使用的内存为32位或64位,具体取决于设备.由于get操作非常快(本质上是一个数组访问),答案是它几乎没有差别*(但使用变量可能会稍微快一点).

从可读性的角度来看,通常最好使用额外的变量并给它一个不言自明的名称.

*假设您使用ArrayList:对于其他列表实现,a的成本get可能很高.

  • 不,你没有 - 正如我的回答中所解释的,变量是对象的引用(=指针)而不是对象本身.在`String s ="ABC"; String s2 = s;`只有一个字符串对象,但有两个引用它. (3认同)