java - 如何在我的代码中正确使用静态变量?

标签 java member static-members

我有两个类:Car 和 LearnArrayList。 Car 是封装类,具有如下属性:制造商、变速箱、ps、燃料类型、静态 carID(此变量存在问题)。我在 Car 构造函数语句中放入了将 carID 增加 1 (carID++) 的内容。我创建了这样一个代码来学习 arrayList:

public class LearnArrayList implements FutureFunctionality {

    public static void main(String[] args) {

        LearnArrayList learn = new LearnArrayList();
        learn.createObjects();
        learn.getInfo();
    }

    List<Car> listOfCars = new ArrayList();

    public void createObjects() {

        Car bmw = new Car("bmw", "mechanic", 200, "diesel");
        Car ford = new Car("ford", "automatic", 150, "petrol");
        Car vw = new Car("vw", "mechanic", 120, "petrol");
        Car audi = new Car("audi", "mechanic", 100, "petrol");
        Car mercedes = new Car("mercedes", "mechanic", 200, "diesel");
        Car opel = new Car("opel", "automatic", 105, "petrol");
        Car toyota = new Car("toyota", "mechanic", 103, "petrol");
        Car renault = new Car("renault", "automatic", 100, "diesel");
        Car dacia = new Car("dacia", "mechanic", 250, "petrol");
        Car lada = new Car("lada", "mechanic", 80, "petrol");

        Car[] cars = { bmw, ford, vw, audi, mercedes, opel, toyota, renault, dacia, lada };

        for (int i = 0; i < cars.length; i++) {
            addToArrayList(cars[i]);
        }
    }

    @Override
    public void addToArrayList(Car car) {
        listOfCars.add(car);
    }

    @Override
    public void getInfo() {
        for (int i = 0; i < listOfCars.size(); i++) {
            System.out.println(listOfCars.get(i).toString());
        }
    }
}

我的输出应该是 10 条记录。我希望每辆车都有一个唯一的 ID,但是当我运行一个程序时,每辆车的结果总是 10。我想让 bmw 是 1,ford 是 2,vw 是 3 等等。

一些输出:

车辆 ID:10 制造商:bmw 变速箱:机械师 PS:200 燃料类型:柴油

汽车 ID:10 制造商:福特 变速箱:自动 PS:150 燃料类型:汽油

汽车 ID:10 制造商:vw 变速箱:机械师 PS:120 燃料类型:汽油

汽车 ID:10 制造商:audi 变速箱:机械师 PS:100 燃料类型:汽油

最佳答案

您应该使 carID 成为非静态的,并创建一个单独的静态变量作为自动增量,例如,nextCarID。然后您可以通过 this.carID = nextCarID++; 填充 carID

关于java - 如何在我的代码中正确使用静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53961393/

相关文章:

java - 通过URL直接调用SKYPE API

c - const 结构实例中成员的有效类型?

swift - Xcode6.3.2 Swift 静态常量错误

java - 如何将图像文件从亚马逊 s3 移动到亚马逊 ec2 并使用 java 运行实例

java - 几个JSP页面和requestURI

c++ - 有没有可能声明一个不占用内存的成员变量?

c++ - 成员对象作为 unique_ptr 或在堆栈上

c++ - 在 cpp 文件中设置静态枚举变量的正确方法

c# - 局部变量与静态变量内存和性能

java - 从 javafx 应用程序启动 python 脚本