性能静态初始化

时间:2018-12-05 13:14:17

标签: 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 tmp;
}

} 选项B

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);
}

}

就性能而言,哪一个是最好的。还是完全一样的东西; 预先感谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

AB好。在B中,每次调用getB函数时,都会创建一个新的int[],这将浪费时间和堆中的内存空间。 getB中的for循环也可以执行多次。