Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 性能静态初始化_Java_Static - Fatal编程技术网

Java 性能静态初始化

Java 性能静态初始化,java,static,Java,Static,哪一种是访问静态元素的最佳方式?假设我有一个类,用于共享int的静态数组 选项A final class A { static private int[] a; static { a = new int[1000]; for(int i = 0; i < a.length;i++) { a[i] = i*50; } } static int getA(int index) { int tmp = a[index]; return tm

哪一种是访问静态元素的最佳方式?假设我有一个类,用于共享int的静态数组

选项A

final class A {
static private int[] a;
static {
    a = new int[1000];
    for(int i = 0; i < a.length;i++) {
        a[i] = i*50;
    }
}
static int getA(int index) {
    int tmp = a[index];
    return tmp;
}
}

就性能而言,哪一个是最好的。或者是完全一样的东西;
提前感谢

A
B
之间的明显区别在于,对于后者,每次调用getter时都会初始化
int[]
数组。在没有进一步要求的情况下,这似乎是不必要的。因此,我投票赞成使用
A
类实现。

A
优于
B
。在
B
中,每次调用
getB
函数时,都会创建一个新的
int[]
,这将占用堆中的时间和内存空间。另外,可以多次执行
getB
中的for循环。

第一个示例的
static
块中的计算将发生一次,而在第二个示例中,每次调用该方法都会发生一次。两者都很差。您是否考虑过
retrurn index*50?这只是一个简单的例子来保持简单。我只是想知道在性能方面。如果我使用非常规值,你的建议就行不通了。非常感谢。anyway@Litiec希望很明显,对于多个调用,每次执行某个操作都比执行一次并重用结果要慢。那你问的是什么表演?谢谢这是我想的,但我不确定。因此,如果我们需要在类之间共享任何类型的数组,A选项是最好的。谢谢。如果您给出的示例是其他内容的代理,并且您想为您的问题添加更多信息,那么我很乐意更新。我只是想确认一下,因为我不确定。谢谢你的回答。
final class B {
static private int[] b;
static int getB(int index) {
    b = new int[1000];
    for(int i = 0; i < b.length;i++) {
        b[i] = i*50;
    }
    int tmp = b[index];
    return tmp;
}
public static void main(String[] args) {
    int numA = A.getA(50);
    System.out.println(numA);
    int numB = B.getB(50);
    System.out.println(numB);
}