Java中的静态变量未初始化

时间:2014-07-06 04:55:03

标签: java bufferedimage static-members

所以我遇到以下代码时出现问题。

public class bw {
    public static int checked[][];
    public static BufferedImage input;

    public static void floodfill(int j, int i, int color, int spotColor, int th) throws Exception {
       input.setRGB(j, i, color);
    }

    public static void main(String args[]) throws Exception {
        BufferedImage input = ImageIO.read(new File("C:\\Users\\Aditya\\Desktop\\Lena.png"));       
        checked = new int[input.getHeight()][input.getWidth()];
        floodfill(250, 310, 0, input.getRGB(250,310), 35);
    }
}

从代码中取出了大部分不相关的部分。已检查的静态变量工作正常。但是我在main函数中初始化的输入变量仍然是null。它给了我洪水填充的空指针异常。

2 个答案:

答案 0 :(得分:3)

你有一个同名的局部变量,在main方法中有一个local variable和一个static attribute。因此,您的静态属性不会被初始化而不是local variable初始化

答案 1 :(得分:0)

试试这个

public class bw{
    public static int checked[][];
    public static BufferedImage input;

    public static void floodfill(int j, int i, int color, int spotColor, int th) throws Exception{
        input.setRGB(j, i, color);

    }
    public static void main(String args[]) throws Exception{
        input = ImageIO.read(new File("C:\\Users\\Aditya\\Desktop\\Lena.png"));       
        checked = new int[input.getHeight()][input.getWidth()];
        floodfill(250, 310, 0, input.getRGB(250,310), 35);

    }
}

你已经声明变量input两次,所以main方法中的输入变量被初始化而另一个(静态属性)不是