在Object Array中=所有元素都相同...分配数据后

时间:2011-12-22 15:57:20

标签: java arrays object

例如,如果我创建对象数组 并提供数据......

短版问题。 array [0] .init(“ce”,2) array [1] .init(“nh”,2)

输出......数组[0] 将与数组[1]相同 但为什么?怎么了?我需要..不一样的结果

这是代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.lang.Math;


public class Gra_ulamki {

    /**
     * @param args the command line arguments
     */

   public static ulamek[] tab_ulamkow;
   public static void main(String[] args) 
   {

         tab_ulamkow = new ulamek[30];


         tab_ulamkow[0] = new ulamek();
         tab_ulamkow[0].init("dd", 5);

         tab_ulamkow[1] = new ulamek();
         tab_ulamkow[1].init("dde", 8); 

         System.out.println("poz x --" + tab_ulamkow[0].x + "-- y poz " + tab_ulamkow[0].y);
          System.out.println("poz x --" + tab_ulamkow[1].x + "-- y poz " + tab_ulamkow[1].y);

         // TODO code application logic here
         //new GUI();
         //new GUI();
    }

}

class ulamek
{
public static String ch_v;
public static int x = 0, y = -5, y_max = 325;


public void init(String a, int number)
{
    this.ch_v = a;

   // przypisanie x
    this.x = number;    
}


public void move()
{


    // restart pozycji w osi y
    if(this.y < y_max)
    {
        this.y += +1;
    }
    else
    {
        this.y = -5;
    }

}

}

感谢您的帮助

3 个答案:

答案 0 :(得分:6)

如果数据成员是static,这意味着该类的所有实例都共享它:

public static String ch_v;
public static int x = 0, y = -5, y_max = 325;

删除两个static修饰符。

答案 1 :(得分:2)

ulamek课程中的字段为static

这意味着它们属于ulamek Type,而不是instances(对象)。

以这种方式改变:

class ulamek
{
    public String ch_v;
    public int x = 0, y = -5, y_max = 325;
...

它应该有用。

答案 2 :(得分:2)

在课程ulamek中:

变化:

public static String ch_v;
public static int x = 0, y = -5, y_max = 325;

为:

public String ch_v;
public int x = 0, y = -5, y_max = 325;

声明变量或方法静态意味着它的值可用于所有类。