Java 输出是什么?为什么ArrayList/任何集合都会这样?
下面是我的bean类:Java 输出是什么?为什么ArrayList/任何集合都会这样?,java,arraylist,collections,Java,Arraylist,Collections,下面是我的bean类: public class Employee { private String name = null; public String getName() { return name; } public void setName(String name) { this.name = name; } } 这是我的主要课程: import java.util.ArrayList; public c
public class Employee {
private String name = null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这是我的主要课程:
import java.util.ArrayList;
public class MainClass {
public static void main(String[] args) {
Employee employee = new Employee();
employee.setName("First name");
ArrayList<Employee> empList = new ArrayList<Employee>();
empList.add(employee);
employee.setName("Last name");
for (Employee emp : empList) {
System.out.println(emp.getName());
}
}
}
当我执行时,输出是:Last name
我的问题是:
正如我所知,Java是
那么这本书的复印件呢
employee对象保存在ArrayList中,或者它引用了
对象值更改时员工的原始对象
在添加到ArrayList后是否保留姓氏?
每个收藏都是这样的吗?
employee引用的副本保存在ArrayList中,但由于它引用同一个employee实例,因此稍后通过employee引用更改实例会影响存储在ArrayList中的元素
是的,每个集合的行为都是这样的,因为集合不创建传递给它们的实例的副本,它们只存储对这些实例的引用。员工引用的副本保存在ArrayList中,但由于它引用的是同一个员工实例,稍后通过employee引用更改实例会影响存储在ArrayList中的元素
是的,每个集合的行为都是这样的,因为集合不创建传递给它们的实例的副本,它们只存储对这些实例的引用
正如我所知,Java是按值传递的,或者更确切地说是按变量值的副本传递的,然后执行employee的副本
对象保存在ArrayList中,或者它引用了原始对象
对象值在之后更改为姓氏时的员工
添加到ArrayList?
引用将按值传递。因此,将有两个引用指向同一个Employee实例。一个引用是employee,另一个在arraylist中
每个收藏都是这样的吗?
对。实际上,这不是集合的属性。这就是java的设计方式。所有可变引用类型的行为都是这样的
正如我所知,Java是按值传递的,或者更确切地说是按变量值的副本传递的,然后执行employee的副本
对象保存在ArrayList中,或者它引用了原始对象
对象值在之后更改为姓氏时的员工
添加到ArrayList?
引用将按值传递。因此,将有两个引用指向同一个Employee实例。一个引用是employee,另一个在arraylist中
每个收藏都是这样的吗?
对。实际上,这不是集合的属性。这就是java的设计方式。所有可变引用类型的行为都是这样的。局部变量employee和列表的第一个元素是对同一对象的两个不同引用。这就是为什么通过setName修改引用的对象(例如在其中一个对象上修改)将通过另一个对象可见
但是,如果通过指定不同的参照来替换参照,则不会影响其他参照
例如:
现在employee和列表的第一个元素引用不同的对象,因此数组中的元素将不会被称为Vishrant。局部变量employee和列表的第一个元素是对同一对象的两个不同引用。这就是为什么通过setName修改引用的对象(例如在其中一个对象上修改)将通过另一个对象可见
但是,如果通过指定不同的参照来替换参照,则不会影响其他参照
例如:
现在employee和列表的第一个元素引用了不同的对象,因此数组中的元素将不会被称为Vishrant。当原语传递给函数时,它是按值传递的,当对象传递给函数时,对所述对象的引用按值传递。当原语传递给函数时,它按值传递,当对象传递给函数时,对所述对象的引用按值传递。
employee = new Employee();
employee.setName("Vishrant");