Java对象数组

Java对象数组,java,arrays,object,Java,Arrays,Object,我在创建一个对象数组,然后为每个对象设置变量时遇到了一些问题。我创建了数组,然后通过设置变量的数组进行循环,但每次循环都会覆盖以前的所有变量 这似乎是一段基本的代码和一个非常不规则的bug public class Test{ Bubble[] bubble = new Bubble[2]; public static void main(String[] args) { bubble = new Bubble[2]; bubble

我在创建一个对象数组,然后为每个对象设置变量时遇到了一些问题。我创建了数组,然后通过设置变量的数组进行循环,但每次循环都会覆盖以前的所有变量

这似乎是一段基本的代码和一个非常不规则的bug

public class Test{

    Bubble[] bubble = new Bubble[2];

    public static void main(String[] args)
    {

        bubble = new Bubble[2];

        bubble[0] = new Bubble();
        bubble[0].setDegree(360);

        bubble[1] = new Bubble();
        bubble[1].setDegree(180)

        System.out.println(bubble[0].printDegree());
        System.out.println(bubble[1].printDegree());
    }

}
这是它的基础,另一个类仅设置变量并使用“bubble[i].setDegree(int);”为其赋值

程序的输出为我提供:

180
180
我应该得到的是:

360
180

我不知道我是不是太生疏了,错过了一些非常明显的东西,还是出了严重的问题。

我看到的唯一可能是你在
泡泡
课程中的专业学位是
静态的。由于所有实例都共享一个静态字段,因此您所做的任何更改都将反映在所有实例中。或者你的
setDegree()
printdege()
方法被破坏(正如@JonSkeet在评论中指出的)。

我看到的唯一可能性是你在
Bubble
类中的字段学位是
静态的。由于所有实例都共享一个静态字段,因此您所做的任何更改都将反映在所有实例中。或者您的
setDegree()
printdege()
方法被破坏(正如@JonSkeet在评论中指出的)。

看起来类气泡中保存度值的变量是
静态的。E它存在于每个类,而不是每个对象

你也可以试着澄清一下:

    bubble[0] = new Bubble();
    bubble[0].setDegree(360);

    System.out.println(bubble[0].printDegree());

    bubble[1] = new Bubble();
    bubble[1].setDegree(180)


    System.out.println(bubble[1].printDegree());

类气泡中保存度值的变量似乎是静态的。E它存在于每个类,而不是每个对象

你也可以试着澄清一下:

    bubble[0] = new Bubble();
    bubble[0].setDegree(360);

    System.out.println(bubble[0].printDegree());

    bubble[1] = new Bubble();
    bubble[1].setDegree(180)


    System.out.println(bubble[1].printDegree());


请显示类气泡的定义。这不是您的实际代码-它现在甚至不会编译,因为您试图从静态方法访问实例变量(
Bubble
)。请发布气泡类。@captain:请使用适当的词语
nyr
对我来说毫无意义,即使是以英语为母语的人。我不敢想象,对于一个只把英语作为第二或第三语言的人来说,这将是多么令人费解。请给出类气泡的定义。这不是你的实际代码,因为你试图访问一个实例变量(
Bubble
)从静态方法。请发布气泡类。@captain:请使用适当的词语
nyr
对我来说毫无意义,即使是以英语为母语的人。我不敢想象,对于一个只把英语作为第二或第三语言的人来说,这是多么令人费解……你比我快了30秒!:DCould be setDegree()和printDegree()使用不同的实例变量,默认值为180。@KennyTM。你所说的默认值是180是什么意思?@RohitJain:
类泡泡{int mDegree=180;…}
(Jon Skeet所说的一个例子。)@KennyTM。当
setDegree
方法没有实际执行它应该执行的操作时,这将是一个问题……您比以前快了30秒!:DCould be setDegree()和printDegree()使用不同的实例变量,默认值为180。@KennyTM。你所说的默认值是180是什么意思?@RohitJain:
类泡泡{int mDegree=180;…}
(Jon Skeet所说的一个例子。)@KennyTM。当
setDegree
方法没有实际执行它应该执行的操作时,这就是问题所在。谢谢您的回复。似乎是static导致了一个问题。希望你的问题向你展示了静态和非静态的区别。当然,这是我一直在犹豫的事情,但现在有了更清晰的理解。干杯。谢谢你的回复。似乎是static导致了一个问题。希望你的问题向你展示了静态和非静态的区别。当然,这是我一直在犹豫的事情,但现在有了更清晰的理解。干杯