Java ';使用静态数组';。。。这到底是什么意思?

Java ';使用静态数组';。。。这到底是什么意思?,java,oop,Java,Oop,我知道什么是静态数组以及如何在Java中使用它,但我的教授给我们分配了一个程序,对于我们必须创建的许多类中的一个,他要求我们“使用静态数组”,这样多个对象将在那里存储数据 例如,如果对象是车库,则每个车库实例将在100x3静态数组中存储其数据: 1, honda, four-door 3, toyota, two-door 1, bicycle, -1 1, ford, pickup 2, ford, fiesta 3, chevy, two-door 3, bicycle, -1

我知道什么是静态数组以及如何在Java中使用它,但我的教授给我们分配了一个程序,对于我们必须创建的许多类中的一个,他要求我们“使用静态数组”,这样多个对象将在那里存储数据

例如,如果对象是车库,则每个车库实例将在100x3静态数组中存储其数据:

 1, honda, four-door
 3, toyota, two-door
 1, bicycle, -1
 1, ford, pickup
 2, ford, fiesta
 3, chevy, two-door
 3, bicycle, -1
-1表示每个车库的末端

这是一个糟糕的例子,但你明白了

所以,我认为他想要的是这样的:

在demo类(主类)中,我将声明一个我用静态数组创建的类的实例:

      PublicAccessArray p1 = new  PublicAccessArray();
然后课程开始时是这样的:

      public class PublicAccessArray {

      public static int[][] accessArray;

      public static void PublicAccessArray()
      {
          accessArray = new int[100][3];
      ...
然后,我将创建使用静态数组的对象的类将如下所示:

      public class ClassThatUsesTheStaticArray {
           public void ClassThatUsesTheStaticArray (PublicAccessArray array1)
           {...
因此,回到demo/main类中,我将使用以下命令实例化这些对象:

      ClassThatUsesTheStaticArray  c1= new ClassThatUsesTheStaticArray (p1);
我想这就是他的意思,我知道静态数组应该像我给出的示例一样(尽管它使用数字作为数据/元素)

我知道他希望我们实例化使用demo/main类中的StaticArray对象的类,我能看到的唯一方法是将p1数组传递给它


我所做的似乎是正确的方式吗?我通常更容易进行实际的编码,而不是弄清楚教授实际上要求我们做什么。我想知道这听起来是否像是一种“使用静态数组”的方法。

在您的示例中,静态数组被定义为
int[100][3]
,这是一种
int
数组。这不符合你的例子。可以将其声明为对象数组,但这很难看


另一方面,请记住,除了学术练习之外,静态字段必须谨慎使用。

我认为你的方法不对。 首先,不能在int数组中存储“honda”或“toyota”。所以你需要字符串数组。第一列看起来像索引,因此您根本不必将其存储在数组中

其次,这个例子是不够的。我向你建议如下

创建类别车辆:

public abstract class Vehicle {
    private String name;
    // getters, setters, constructor...
}
然后创建扩展车辆的类Car和Bicycle。这些类可以包含其他数据:

public class Car extends Vehicle {
    public static enum Type {PICKUP, }; // add here other types
    private String model;
    private int doorsCount;
    private Type type;
}
现在创建类车库:

public class Garage {
    private List<Vehicle> vehicles;
    // other fields and methods relevant for garage.
}
您可以使用静态初始值设定项来填充它(我假设这里存在我在解释中没有提到的方便构造函数):


我相信你的教授会满意的。祝你好运

我的错,这个例子只是为了说明。实际数组是一个int数组。是的,使用静态数组只是我的教授让我们利用所有可能性的一种试探性方式。好吧,忘了我用汽车作为例子吧。我不是想把对象放在int数组中,只是把int放在int数组中。我想这可能比说数组是:1,2,3 4,5,6 1,2,-1:-)更清楚,我喜欢你的方式,但是当我看他给我们演示示例的方式时,它必须是传递带有静态数组的对象。我认为基本的想法是使用静态数组作为数据库,诸如此类。
private static Garage[] garages = new Garage[100];
static {
    Vehicle honda = new Car("honda", 4);
    Vehicle toyota = new Car("toyota", 2);    
    Vehicle bicycle = new Bicycle("bicycle");    
    garaghes[0] = new Garage("First", new Vehicle[] {honda, toyota, bicycle});

    Vehicle fiesta = new Car("ford", "fiesta");
    Vehicle pickup = new Car("ford", Car.Type.PICKUP);
    garaghes[1] = new Garage("Second", new Vehicle[] {fiesta, pickup});
}