for循环外定义对象(变量)和for循环里定义对象(变量)的区别

外边:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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'}

 

里面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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'}

 

请注意:下面的这两种写法的效果是一样的,你怎么写都是可以的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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);
 
      }
 
  }

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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   ~码铃薯~  阅读(553)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2021-08-05 软件工程基础知识 错题

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示