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中添加进去的就是三个相同的对象了。

posted on 2022-08-05 10:55  ~码铃薯~  阅读(544)  评论(0编辑  收藏  举报

导航