Java 不知道我是否';我正确地做了这个不变性练习
我的教授刚刚讨论了可变和不可变,给了我们这个编码练习来完成。 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个 任何输入都是有帮助的,谢谢 这是我的主课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} 我
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()
方法是隐式调用的。