java - Java:创建对象并直接添加到 ArrayList - 两种方式
问题描述
对创建对象的一些基本概念有一些麻烦。在下面的代码中,我创建了一个 [person] 对象,然后将其添加到 [persons] 数组列表中。它工作正常。
ArrayList<Person> persons = new ArrayList<>();
Person person = new Person(name, age);
persons.add(person);
但是,如果我尝试做类似的事情:
persons.add(Person person = new Person(name, age));
由于某种原因它不起作用。
另一方面,如果我这样做:
persons.add(new Person(name, age));
有用!我认为在我的错误尝试中做 Person 初始部分有问题,可能与声明对象有关,但我不太确定不包括它的原因是什么?
解决方案
Person person = new Person(name, age);
是一个语句(它不能用作表达式,它不返回任何值),而
person = new Person(name, age)
是一个表达式语句,可用于赋值和返回值
persons.add(person = new Person(name, age));
读书:
https://docs.oracle.com/javase/specs/jls/se13/html/jls-14.html#jls-14.5