Java 不知道我是否';我正确地做了这个不变性练习

Java 不知道我是否';我正确地做了这个不变性练习,java,immutability,Java,Immutability,我的教授刚刚讨论了可变和不可变,给了我们这个编码练习来完成。 1) 创建名为Customer的Customer对象,初始值为1和“Cust1” 分别 2) 使用toString()方法在屏幕上显示customer对象 3) 创建一个名为name的字符串对象引用,并为其指定客户的名称 4) 将值“Bo Beep”指定给对象引用名称 5) 使用toString()方法在屏幕上显示customer对象 输出应该是这样的 客户{id=1,name=Cust1} 客户{id=1,name=Cust1} 我

我的教授刚刚讨论了可变和不可变,给了我们这个编码练习来完成。 1) 创建名为Customer的Customer对象,初始值为1和“Cust1” 分别

2) 使用toString()方法在屏幕上显示customer对象

3) 创建一个名为name的字符串对象引用,并为其指定客户的名称

4) 将值“Bo Beep”指定给对象引用名称

5) 使用toString()方法在屏幕上显示customer对象

输出应该是这样的

客户{id=1,name=Cust1}

客户{id=1,name=Cust1}

我现在有两个独立的班级,在这里。我不确定我是否做对了,我想我已经做对了前2个,但我不确定3-5个

任何输入都是有帮助的,谢谢

这是我的主课

package hw01;


public class Main {
static Customer customer = new Customer(1, "cust1");
static Customer name = new Customer(1, "Bo Peep");


public static void main(String[] args) {
    System.out.println(customer);
    System.out.print(customer);

}
}
这是我的客户课程

package hw01;

public class Customer {

private int id;
private String name;

public Customer() {
}

public Customer(int id, String name) {
    this.id = id;
    this.name = name;


}

public int getId() {
    return id;
}

public  String getName() {
    return name;
}

@Override
public String toString() {
    return "Customer{" + "id=" + id + ", name=" + name + '}';
}

}
听起来#3应该是这样的:

String name = customer.getName();
然后#4将是:

name = "Bo Peep";

我认为这个练习的目标是证明,即使
name
customer.name
引用了相同的
String
对象,因为设置
name=“Bo Peep”时,
String
是不可变的
您没有更改实际的
字符串
对象,而是创建并引用一个新的
字符串
对象。如果
字符串
是可变的,那么第二次打印
客户
将显示名称“Bo Peep”。

这似乎是一个可变练习。在4中,你不应该给同一个对象分配新的值吗?是的,对不起,我正确地分配了3吗?你能解释一下4吗?是的,但是我把名字设置为Bo peep正确了吗?另外,当它说使用tostring输出时,这是否意味着我必须调用tostring或只是打印(客户)?它是不可变的,因为没有设置器和私有变量是正确的?我应该把字符串name=customer.name?我不能把它放在我的主类中,因为它在另一个类中是私有的,如果我把它放在另一个类中,它会说它已经定义好了。我认为只打印客户就可以了,因为
toString()
方法是隐式调用的。