重复访问数组和本地存储值之间的区别

时间:2014-10-23 17:46:35

标签: java arrays memory for-loop runtime

有人可以解释重复访问数组的运行时和缺点吗?如果最好将数组中的String值存储为临时字符串。例如,如果我有一个字符串数组,那么最好做

int paramLength = params.length;
for (int i=1; i<paramLength; i++){

for (int i=1; i<params.length; i++){

我认为在上述情况下第一种选择更好。权衡是访问数组对象内部的长度并存储它而不是重复访问长度。

此外,一旦我进入for循环并且我需要多次使用数组中的字符串,最好将String作为局部变量存储在数组中,或者继续访问数组,为什么它更好?

for (int i=1; i<paramLength; i++){
System.out.println(params[i]);

for (int i=1; i<paramLength; i++){
String temp = params[i];
System.out.println(temp);

for (String s: params) 
System.out.println(s);

很抱歉,如果重复这一点,但我无法找到更多关于在数组中访问这些值的缺点的知识,而不是在本地存储它。

1 个答案:

答案 0 :(得分:0)

最终,数组索引和String对象只是指向内存中某些位置的数据,每次只是指内存中的某个位置,因此性能与该方面完全没有区别。

这一行只是为你提供了另一个指向内存中相同位置的指针。当您引用它们时,您将从内存中的相同位置获取相同的数据。

String temp = params[i];

如果我们谈论大量数据(大量字符串),最好使用数组而不是一堆String对象。这是因为String对象可以稀疏地分散在整个内存中,即在不同的缓存和页面帧上。因此,使用数组将使您在数据位置上保持连续性,从而提供更好的缓存和页/帧性能。