new对象声明的位置不同 得到的结果也不同

不求甚解误入此道 2017-11-17 02:27:13






为什么xxx x =new xxx();
的位置不一样 输出的结果也不一样 求大神给讲讲
...全文
459 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
首先,你要知道list.add会有一次判断,判断add()里面的对象的内存地址是否相同,如果相同,后面的会覆盖前面。所以,你把new放在for循环外面时,也就是你每次给同一个内存地址赋不同的值,所有后一个会覆盖前一个。但是你new在for里面,那么就是每次循环都创建一个新的内存地址用于存放值,所以不会覆盖。还是不清楚的话去看看java基础,里面有详细的介绍。
雨中客888 2017-11-17
  • 打赏
  • 举报
回复
所以你打印出来的 第一个都是9
雨中客888 2017-11-17
  • 打赏
  • 举报
回复
那肯定是不一样的啊 ,你两次创建的地方不一样,不是单纯的行数位置变化。 你第一次创建是在for循环之外,第二次是在里面 。 你第一次的对象 x 只创建了一次 第二次的那个创建x 创建了10次 每次进循环都会创建一个新对象 每个新对象 你给他赋了一个值 然后你的list加了10个对象 每个对象都不一样的值 而你第一个 那只是把X对象的v属性 反复赋值,当循环结束时,X对象的V属性是9 ,你那个list加了10个一模一样的对象 所以对象的V属性都是9啊
  • 打赏
  • 举报
回复
那你给我讲讲啊 为什么啊
李德胜1995 2017-11-17
  • 打赏
  • 举报
回复
这都看不出来????

1,508

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧