基本数据类类型:存的是数值本身,java中有四类八种基本数据类型,
- 第一类:整型 byte short int long
- 第二类:浮点型 float double
- 第三类:逻辑型 boolean
- 第四类:字符型 char
引用类型变量:存放的是数据的引用地址,并不是数据的本身,引用类型变量是以间接方式去获取数据。引用类型变量都指向对象,如:数组、类、字符串等。
Collection接口的常用方法:
- boolean add(Object o)
- void clear()
- boolean isEmpty()
- boolean contains(Object o)
- Iterartor iterator()
- boolean remove(Object o)
- int size()
- int hashCode();
- boolean equals(Object o);
- Object[] toArray() : 返回一个数组,该数组中包括集合中的所有元素
List,Set是继承自Collection接口,Map不是。所以记不清队列和栈的添加和删除函数时,一律用add和remove。
总结:
- 如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList或者直接数组。
- 如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
- 在除需要排序时使用TreeSet,TreeMap外,都应使用HashSet,HashMap,因为他们的效率更高。
- 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
- 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是面向接口编程。
注意:
1、Collection没有get()方法来取得某个元素,只能通过iterator()遍历元素。 2、Set和Collection拥有一模一样的接口。 3、List,可以通过get()方法来一次取出一个元素,使用数字来选择一堆对象中的一个,get(0)...。(add/get)。 4、一般使用LinkedList构造栈stack、队列queue。 5、Map用 put(k,v) / get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。HashMap会利用对象的hashCode来快速找到key。 6、Map中元素,可以将key序列、value序列单独抽取出来。使用keySet()抽取key序列,将map中的所有keys生成一个Set。使用values()抽取value序列,将map中的所有values生成一个Collection。 为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复。