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

  • 相关阅读:
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    [转载]jquery版结婚电子请帖
    [转载]jquery版小型婚礼(可动态添加祝福语)
    maven向本地仓库导入jar包(处理官网没有的jar包)
    Maven的POM.xml配置大全
    Linux使用手册-时区和时间设置
    Fedora中允许mysql远程访问的几种方式
    [Keygen]IntelliJ IDEA 14.1.7
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/16553617.html
Copyright © 2020-2023  润新知