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中添加进去的就是三个相同的对象了。
浙公网安备 33010602011771号