创建新对象时,静态值将更改为第一个值

时间:2015-12-02 16:01:22

标签: java variables object static

我有两个静态整数值,我正在绘制迷你圆圈,用于在框架上创建字母的数字表示, 我只需要为每个字母使用一次。我的问题是坐标是X:100 Y:100在Draw类开始时,在创建对象draw2之后具有相同的值,但它应该是x:165 y:100,Draw类中的数字正在增加。我该如何解决这个问题?

    JFrame frame = new JFrame("test");
    frame.setVisible(true);
    frame.setSize(800, 600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Draw draw = new Draw('A');
    frame.add(draw);
    Draw draw2 = new Draw(' ');
    frame.add(draw2);

画班

public class Draw  extends JPanel{
boolean[][] letterArray;
static int X = 100, Y = 100;

1 个答案:

答案 0 :(得分:-1)

静态变量绑定到类。与普通成员变量形成对比,后者与其拥有的实例绑定。

class ExampleA {
    static int value; // a class member
}

class ExampleB {
    int value;  // an object member
}

ExampleA a1 = new ExampleA(), a2 = new ExampleA();
ExampleA.value = 10;
System.out.println("a1.value=" + a1.value);  // 10
System.out.println("a2.value=" + a2.value);  // 10

a1.value = 25;  // changes ExampleA.value really
System.out.println("a1.value=" + a1.value);  // 25
System.out.println("a2.value=" + a2.value);  // 25

ExampleB b1 = new ExampleB(), b2 = new ExampleB();
b1.value = 5;
b2.value = 10;
System.out.println("b1.value=" + b1.value);  //  5
System.out.println("b2.value=" + b2.value);  // 10

换句话说:ExampleA的所有实例共享相同的value变量。但ExampleB的每个实例都有自己的value变量。