就像我有这样的代码:
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。
我如何制作一个新的'对象
答案 0 :(得分:4)
删除static
声明。将某些内容声明为static
意味着它将在类的所有实例之间共享。因此,在您的代码中,a
和b
都使用相同的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;