无法理解以下Java程序的输出
我是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);
}
这会同时打印椅子和桌子,而我希望它只打印椅子,因为当我们创建emp对象列表时,它只有椅子。有人能解释一下这背后的原因吗
# 1 楼答案
您正在创建列表对象后添加。。。。所以它会存储在列表内存中。。。 使用
list.index(0);
只打印椅子# 2 楼答案
首先,我们需要了解什么是参考变量:
这里,list引用变量引用了ArrayList对象,所以这意味着它的list总是有ArrayList对象的内存地址
无论何时添加新元素,它总是引用与ArrayList对象相同的地址
您正在将桌面添加到列表对象中,使其引用相同的内存地址
这就是为什么它保留了我们在这里作为引用传递的对象的值
总之,它是同一个物体,同时也是印刷的原因