`

一个指针的奇妙

    博客分类:
  • java
 
阅读更多
大家猜猜这个输出的结果是啥呢?
public static void main(String[] args){ 
List<String> tempList = new ArrayList<String>();
List<Object> aList = new ArrayList<Object>();
for(int i=0;i<10;i++){
                tempList.add(i+"");
       aList.add(tempList);
  }

  for(int j=0;j<aList.size();j++){
        System.out.println(aList.get(j));
   }
}
结果为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

是否和你想的结果一样呢。?

分析:产生这样的结果是由于aList中每个元素存放的是tempList的内存地址,tempList值开辟了一个地址。所以当输出aList10个元素的值时,都是输出tempList地址的值。
分享到:
评论

相关推荐

    奇妙的C++——智能指针

    NULL 博文链接:https://wuliangxx.iteye.com/blog/615291

    利用C++模板的C到Lua简易封装库

    支持一级指针。理论上支持多级指针。压缩包里的LuaMe是封装库,LuaSDL2是利用该库封装的SDL1.2的一些函数和结构体(CodeBlocks),可以作为参考代码。源代码行数相当小,可以作为自己实现封装的参考。想封装C++类的话...

    你可能不知道的陷阱:C#委托和事件的困惑

    指针是如此奇妙,通过一个地址,可以指向一个数,结构体,对象,甚至函数。最后的一种函数,我们称之为“函数指针”(和“指针函数”可不一样!)就像如下的代码:C语言因为函数指针获得了极强的动态性,因为你可以...

    改变javascript函数内部this指针指向的三种方法

    javascript 的this 值,真的是非常的莫名奇妙。我一直被搞的很头晕,也许正是这个this,让大多数人感觉js 非常的莫名其妙。

    jquery each的几种常用的使用方法示例

    call这个方法很奇妙,其实官方的说明是:“调用一个对象的一个方法,以另一个对象替换当前对象。”网上更多的解释是变换上下文环境,也有说是改变上下文this指针。 代码如下:call([thisObj[,arg1[, arg2[, [,.argN]...

    TaskThread

    近日灵感飙升,突发奇想,模拟操作系统调度进程的方式写了个调度函数的类库,暂称为TaskThread,此类皆组合或继承自TTaskThread类,它们是一种奇妙的类,它们可以把一个一个的现成函数当成一个“process"强行塞入...

    VC学习大纲 VC学习讲义

    VC工程的编译原理与过程,将工程中不同的类拆分到不同的原文件中,每一个类由一个.h和.cpp文件共同完成,然后解决头文件重复定义问题,培养了学员良好的编程习惯,也为以后分析MFC Appwizard生成的工程奠定了良好...

    实现窗口移动以及拉伸movewindow

    该源码的主要功能:用C++来实现模拟微软的全新的,自绘的,窗口移动以及拉伸功能,风格规范,能让你体会C++设计的神奇力量,同时也理解为什么需要指向类成员函数的指针来实现的方便和奇妙,你一定大有所获。

    第7章-JUC多线程v1.1.pdf

    首先判断任务是否为空, 为空抛出空指针异常, 否则执行下一个判断: 当前线程数量是否小于核心线程池线程数量, 是,则执行addIfUbderCorePollSize(command)方法, 在核心线程池中创建新的线程, 并且执行这个任务 ...

Global site tag (gtag.js) - Google Analytics