gpt4 book ai didi

java - 为什么我新建的对象看起来是一样的?

转载 作者:行者123 更新时间:2023-11-29 10:02:38 25 4
gpt4 key购买 nike

我目前正在编写一个 java 程序,我得到的结果似乎很奇怪。我正在构造类 SimulatedExchange 的对象,它具有以下构造函数:

public class SimulatedExchange {
public static String exchangeName;
SimulatorData sim;

public static double Fee;
public static Limit buyLimit;
public static Limit sellLimit;

public SimulatedExchange(String exchangename, SimulatorData simdata){
exchangeName = exchangename;
sim = simdata;
if (exchangename.contentEquals("Exchange1")) Fee = .005;
if (exchangename.contentEquals("Exchange2")) Fee = .0055;
if (exchangename.contentEquals("Exchange3")) Fee = .002;
buyLimit = new Limit();
sellLimit=new Limit();

}

我的主类是这样的:

     public static void main (String[] args){
SimulatorData fake = new SimulatorData("c:/users/el nico/documents/SimulatorData.xls");
SimulatedExchange Exchange1 = new SimulatedExchange("Exchange1", fake);
SimulatedExchange Exchange2 = new SimulatedExchange("Exchange2", fake);
SimulatedExchange Exchange3 = new SimulatedExchange("Exchange3", fake);

System.out.println("1st exchange name: " + Exchange1.exchangeName);
System.out.println("2nd exchange name: " + Exchange2.exchangeName);
System.out.println("3rd exchange name: " + Exchange3.exchangeName);

}

SimulatorData 对象包含它在构建时从文件中读取的数据的 ArrayList。

我得到以下输出:

第一个交易所名称:Exchange3

第二个交易所名称:Exchange3

第三个交易所名称:Exchange3

这对我来说很奇怪,因为我在 SimulatedExchange 对象名称 Exchange1、Exchange2 和 Exchange3 的三个不同构造函数中输入了不同的字符串,所以我认为构造函数会以不同方式设置它们的每个 exchangeName 属性。我对 Java 有点陌生,我不确定为什么这不会发生。我不认为我将不同 Exchange 的地址设置为指向堆中的同一个对象,因为我每次都在构造一个新对象。

我注意到的一件事是,对象在构造后立即具有正确的 exchangeName 属性(和所有其他属性),因此这意味着它仅在构造同一类的另一个对象时才被更改。这向我暗示 Exchange1、Exchange2 和 Exchange3 都指向堆中的同一个对象。但我不明白为什么会这样。

任何见解将不胜感激!如果答案非常明显,我提前道歉,这似乎是必然的。我似乎无法查明问题所在。谢谢,保罗

最佳答案

您已将 exchangeName 设置为 static。这意味着无论您有多少个 SimulatedExchange 实例,都只会有一个 exchangeName 实例。使其非静态。此外,在构造函数中将this添加到实例变量中,例如this.exchangeName = exchangename;

关于java - 为什么我新建的对象看起来是一样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19263841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com