Java 在对象数组中=所有元素都相同。。。分配数据后

Java 在对象数组中=所有元素都相同。。。分配数据后,java,arrays,object,Java,Arrays,Object,例如,如果我创建对象的数组 和正在处理的数据 问题的简短版本。 数组[0]。初始化(“ce”,2) 数组[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_ul

例如,如果我创建对象的数组 和正在处理的数据

问题的简短版本。 数组[0]。初始化(“ce”,2) 数组[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;
    }

}

}
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
导入java.util.*;
导入java.lang.Math;
公共级格拉乌乌兰基{
/**
*@param指定命令行参数
*/
公共静态ulamek[]选项卡_ulamkow;
公共静态void main(字符串[]args)
{
tab_ulamkow=新乌拉梅克[30];
tab_ulamkow[0]=新的ulamek();
tab_ulamkow[0]。初始(“dd”,5);
tab_ulamkow[1]=新的ulamek();
tab_ulamkow[1]。初始(“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代码应用程序逻辑
//新GUI();
//新GUI();
}
}
乌拉梅克类
{
公共静态字符串CHU v;
公共静态整数x=0,y=-5,y_max=325;
公共void init(字符串a,整数)
{
这是chu v=a;
//przypisanie x
x=数字;
}
公开作废动议()
{
//重新启动pozycji w osi y
如果(此.y

感谢您的帮助

如果数据成员是静态的
,这意味着它由类的所有实例共享:

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

删除两个
static
修饰符。

您的
ulamek
类中的字段是
static

这意味着它们属于ulamek
类型
,而不是
实例
(对象)

这样修改:

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

它应该会起作用。

在课堂上
ulamek

更改:

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


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

static
意味着共享。;)最好不要在构造函数中设置静态字段。你介意回答吗?
public String ch_v;
public int x = 0, y = -5, y_max = 325;