for循环外定义对象(变量)和for循环里定义对象(变量)的区别
外边:
package com.sky.demo; import java.util.ArrayList; public class Test { public static void main(String[] args) { User user = new User(); ArrayList<User> list = new ArrayList<User>(); for (int i = 0; i < 3; i++) { user.setId("a"+i); user.setName("丫丫"+i); user.setHobby("篮球"+i); list.add(user); } for (User user1 : list) { System.out.println(user1); } } }
User{id='a2', name='丫丫2', hobby='篮球2'}
User{id='a2', name='丫丫2', hobby='篮球2'}
User{id='a2', name='丫丫2', hobby='篮球2'}
里面:
package com.sky.demo; import java.util.ArrayList; public class Test { public static void main(String[] args) { ArrayList<User> list = new ArrayList<User>(); for (int i = 0; i < 3; i++) { User user = new User(); user.setId("a"+i); user.setName("丫丫"+i); user.setHobby("篮球"+i); list.add(user); } for (User user1 : list) { System.out.println(user1); } } }
User{id='a0', name='丫丫0', hobby='篮球0'}
User{id='a1', name='丫丫1', hobby='篮球1'}
User{id='a2', name='丫丫2', hobby='篮球2'}
请注意:下面的这两种写法的效果是一样的,你怎么写都是可以的
public MyPanel() { this.hero = new Hero(100, 100); //在这里我们可以在初始化坦克的时候设置坦克的速度 this.hero.setSpeed(2); //创建敌人的坦克 for (int i = 0; i < count; i++) { EnemyTank enemyTank = new EnemyTank(100 * (i + 1), 0); System.out.println(enemyTank.hashCode()); enemyTank.setDirect(2); enemyTank.setSpeed(1); enemyTanks.add(enemyTank); } }
public MyPanel() { this.hero = new Hero(100, 100); //在这里我们可以在初始化坦克的时候设置坦克的速度 this.hero.setSpeed(2); //创建敌人的坦克 EnemyTank enemyTank = null; for (int i = 0; i < count; i++) { enemyTank = new EnemyTank(100 * (i + 1), 0); System.out.println(enemyTank.hashCode()); enemyTank.setDirect(2); enemyTank.setSpeed(1); enemyTanks.add(enemyTank); } }
运行这两段代码,我们会看到都会创建不同的对象
214126413
396873410
1706234378
但是如果你像上图一样,已经在上面将对象创建好了,那么在list中添加进去的就是三个相同的对象了。