java - 对如何实现 ArrayList 感到困惑
问题描述
所以我在看 ArrayLists 并且对如何向数组添加元素而没有明确说明 people.add(person1) 一遍又一遍地为每个对象感到困惑。我目前已编译此代码,但不会在控制台中打印任何内容。我认为我的错误是对象构造函数和people.add(this)
. 我究竟做错了什么?
import java.util.ArrayList;
public class People {
int age;
String name;
static ArrayList<People> people = new ArrayList<People>();
public People(String name, int age){
this.name = name;
this.age = age;
people.add(this);
}
People person1 = new People("Bob", 41);
People person2 = new People("Arthur", 32);
People person3 = new People("Tom",18);
public static void main(String[] args){
for(People p : people) {
System.out.println(p.name);
}
}
}
解决方案
数组列表是一个static
变量。您创建的People
对象是非静态变量,仅在调用构造函数时创建。您应该将对象创建移动到main()
函数中。
public static void main(String[] args){
People person1 = new People("Bob", 41);
People person2 = new People("Arthur", 32);
People person3 = new People("Tom",18);
for(People p : people) {
System.out.println(p.name);
}
}
您可以在此处阅读有关静态变量的更多信息
推荐阅读
- javascript - 在 jquery 的帮助下选择下拉菜单的值
- javascript - 在数组reactjs中查找元素
- java - 如何使用opencv确定是否检测到对象
- jquery - jQuery获取空输入
- php - yii2 - 前端到后端和后端到前端控制器配置文件 + .htaccess - 完全配置
- angularjs - 如何将多个值从 Asp.Net WebApi 发送到 Angularjs 控制器?
- polymer - 聚合物 1 当行为中对象的一个属性被修改时,观察者不会被触发
- c# - 为什么授权属性无法授权有效用户登录的操作?
- python - 导致龙卷风 ioloop 在停止时停止的可能原因是什么?
- apache-spark - 如何使用火花进行并行操作