我是Java新手,对此代码的输出有疑问
public class Employee{
private String name;
private int age;
private List<String> stationeryList;
public Employee(String name, int age, List<String> stationeryList)
{
this.name= name;
this.age = age;
this.stationeryList = stationeryList;
}
// getter methods
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public List<String> getStationeryList()
{
return stationeryList;
}
}
public static void main(){
String name = "XYZ";
int age = 34;
List<String> list = new ArrayList<String>();
list.add("Chair");
Employee emp = new Employee(name, age, list);
list.add("Desk");
for(String str:emp.getStationeryList())
System.out.println(str);
}
这打印了Chair和Desk,而我期望它只打印Chair,因为我们创建emp对象列表时只有Chair。有人可以解释这背后的原因。
答案 0 :(得分:0)
您在创建List对象后添加....因此它将存储在List内存中...
使用list.index(0);
仅打印主席
答案 1 :(得分:0)
首先,我们需要了解什么是引用变量:
List<String> list = new ArrayList<String>();
这里 list 引用变量引用了 ArrayList 对象,这意味着它的列表总是有ArrayList对象的内存地址。
每当你要添加一个新元素时,它总是引用 ArrayList 对象的相同地址。
您正在将桌面添加到列表对象中,以便它引用相同的内存地址。
这就是它保留我们作为参考传递的对象值的原因
Employee emp = new Employee(name, age, list);
所以总的来说它同时反映了它的印刷时间。