"创建" java中的一个对象

时间:2014-08-26 03:09:48

标签: java

就像我有这样的代码:

class myobj {
    public static int i;

    public myobj(int _i) {
        i = _i;
    }
}

public class mainclass {
    public static void main(String[] args) {
        myobj a = new myobj(1);
        myobj b = new myobj(2);

        System.out.println(b.i); // Prints 2 - expected
        System.out.println(a.i); // Prints 2 - unexpected
    }
}

我希望a.i为1。

我如何制作一个新的'对象

4 个答案:

答案 0 :(得分:4)

删除static声明。将某些内容声明为static意味着它将在类的所有实例之间共享。因此,在您的代码中,ab都使用相同的i变量。如果我们只删除static修饰符,则代码将按预期工作。

class myobj {

    public int i;

    public myobj(int _i) {
        i = _i;
    }
}

public class mainclass {

    public static void main(String[] args) {
        myobj a = new myobj(1);
        myobj b = new myobj(2);

        System.out.println(b.i); // Prints 2 - expected
        System.out.println(a.i); // Prints 2 - unexpected
    }
}

答案 1 :(得分:2)

制作本:

public static int i;

这样:

public int i;

其他一切都很好。

答案 2 :(得分:2)

考虑到你要求改变这个

public static int i;

public int i;

因为myobj的所有实例共享静态字段。

答案 3 :(得分:0)

如果你这样写你的课

public static int i;

只会创建一个i,这个我将与所有myobj创建的对象共享。static关键字的含义和用途。阅读this thread以便更好地理解。我希望i创建myobj后删除static关键字

public int i;