集合(Collection): 用于存储对象的可变长度的容器。 数组: 数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字成为数组名,编号成为下标。 特点: 1.数组是相同数据类型的元素的集合 2.数组中的各元素是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起 3.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。 结构形式:
栈内存 在方法中定义的一些基本类型的变量和对象的引用变量都在方法的栈内存中分配,当在一段代码中定义一个变量时,java就在栈内存中为这个变量分配内存空间,当超出变量的作用域后,java会自动释放掉为该变量所分配的内存空间。 堆内存 堆内存用来存放由new运算符创建的对象和数组,在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理。在堆中创建了一个数组或对象后,同时还在栈内存中定义一个特殊的变量。让栈内存中的这个变量的取值等于数组或者对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量,引用变量实际上保存的是数组或对象在堆内存中的地址(也称为对象的句柄),以后就可以在程序中使用栈的引用变量来访问堆中的数组或对象。 ------------------------------------------------------------------------------- Collection List:有序,可以重复,有角标。 ArrayList:底层是数组数据结构,线程是不同步,查询速度快。 LinkedList:底层是链表数据结构,线程是同步的,增删速度快。 Vector:底层是数组数据结构,jdk1.0出现,线程是同步的,之后被ArrayList取代,因为效率较低。 Set:无序,不可以重复。(该集合没有特有的方法,直接继承自collection) HashSet:数据结构是哈希表。 TreeSet:数据结构是二叉树。 Map:一次存入一对元素,以键值对(key,value)形式存在。必须保证key的唯一性。 HashTable:底层是哈希表数据结构,线程是同步的,不可以存入key:null value:null。效率低下被HashMap取代。 HashMap:底层是哈希表数据结构,线程是不同步的,可以存入null键值。 TreeMap:底层是二叉树数据结构,可以对map集合中的键进行排序。 Collections:这个是集合框架中的工具类,static。 常见方法: 二分查找。int binarySearch(list,key);//要求list 集合中的元素都是Comparable 的子类。 取最大值和最小值。max(Collection);min(Collection) 进行排序:sort(list); 在集合中经常使用到jdk1.5的新特性: 泛型:提供了一个安全机制。 1.将运行时期出现的问题转移到了编译时期。因其指定了要保存的对象的类型。 2.消除了强制转换的麻烦。 自动装箱拆箱:List<Integer> list; list.add(3);在操作这个数据前会把3变成Integer对象封装。等于list.add(new Integer(3));