今天拿了本 think in java第四版 英文版 看了一下:顺便做了一下笔记!
List 类是容器 用来存放序列 。 Maps 是容器,它是关联数组 。 Sets 类 也是容器,保存每种类型对象的一种 。
List的两种数组:
ArrayList :访问数组里阿妈的任何一个数组的时间都是一样的 。然而LinkedList:越深的所以访问所需的时间越长。
插入一个元素到数组里。使用ArrayList的时间较长,LinkedArray的时间较短 。
具体化的数组有利于回收: ArrayList<Shape> shapes = new ArrayList<Shape>();
相应的as里 var shapes :Vector.<Shape> =new Vector.<Shape>();
局部变量都是保存在stack里!
动态创建的对象都保存在堆里(heap也就是a pool of memory <记忆池>),动态对象一般都是运行时创建的
堆heap分配给动态变量所需的时间比在栈stack里分配内存要的时间长.堆heap内存分配依赖于它的存储机制。动态分配机制更复杂和多变化 。
Java只用动态(dynamic)分配存储 :即:我们创建新的对象(动态对象)需要new 构造器。他们都存储在堆heap里 。
在栈里创建的对象(局部变量),编译器能决定它存在多长的时间,然后自动的销毁它 。
然而堆里heap里的对象,编译器不知道它的生命周期(即不知道什么时候它该销毁),在C++里,我们要人为的编程去销毁它(堆heap里的对象)。在java里存在GC(垃圾回收器)能很好的防止内存泄露 。