日期:2014-05-20  浏览次数:20767 次

如何使用static
Java code

/*
*不报错的写法
*/

public static void getSummeVonXijMalDifferenzMalwg() throws FileNotFoundException, IOException{
        getProdukt();
        double[] sum = new double[windowSize];
        int j = 0;
       
        while(j < windowSize){
            for(int i = 0; i < myArray.length; i++){
                 sum[j] = sum[j] + myArray[i][j]; // sum of myArray's rows
                 //这里就不报错。
            } 
            j++;
        }
    }



但是我需要下面这种定义为static全局变量的写法,以便于提高速度。如何修改才能不报错并且还是全局变量???
Java code

/*
*这个报错程序要如何修改才能成功运行?为了提高速度,我需要这种static全局的写法
*/
public static double[] sum = new double[windowSize];
    
.....
public static void getSummeVonXijMalDifferenzMalwg() throws FileNotFoundException, IOException{
        getProdukt();
        
        int j = 0;
       
        while(j < windowSize){
            for(int i = 0; i < myArray.length; i++){
                 sum[j] = sum[j] + myArray[i][j]; // sum of myArray's rows
                 //上面这行报错
            } 
            j++;
        }
    }





------解决方案--------------------
当然,非常大可能的问题就是 windowSize 最开始根本就是0,那你的数组大小就是0,肯定什么数据都装不下。

变通的做法可以考虑:
if (windowSize > sum.length) sum = new double[windowSize];


但我认为,即便你用了这种招数,其实速度也不能提升多少。分配数组内存这个动作非常快,基本上也就1ms以内的事情,除非你这个函数被调用的非常频繁,否则没啥性能提升。