jvm如何处理在循环内创建对象

Sha*_*shi 0 java performance jvm

List list = new ArrayList();


String[] test = {"ram", "mohan", "anil", "mukesh", "mittal"};

for(int i =0; i < test.length; i++)

{

  A a = new A();

  a.setName(test[i]);

  list.add(a);

}
Run Code Online (Sandbox Code Playgroud)

JVM如何处理每个循环中对象a的创建?"列表"如何区分不同的实例?在每次迭代中创建对象是一种好习惯.如果不是,将对象添加到列表中的最佳解决方案是什么.

Bil*_*ard 6

在您的示例中,在循环的每次迭代中创建一个新对象.该列表能够区分它们,因为它不关心您在代码中将它们全部称为"a",它通过每次调用时重新分配的引用来跟踪它们

a = new A();
Run Code Online (Sandbox Code Playgroud)

每次调用该行代码时,都会在堆上创建一个新对象,并将其在内存中的地址分配给引用a.这是列表记录的引用,而不是变量名称.

这是填充列表的完美正常的方法(除了其他人提到的语法错误,我假设你可以在尝试编译代码时修复).