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号
浙公网安备 33010602011771号