stricfp的含义是FP-stric,也就是精确浮点的意思.如果没有stricfp关键字时,java在对浮点数的运算不那么令人满意,用了stricfp来修饰顶层类方法和接口之后就会更加精确.
五、2016.05.09
JAR(Java Archiv File),意思是java档案文件,与ZIP的区别就是里面包含了一个META-INF/MANIFEST.MF的清单文件(自动生成).
JAR文件的好处:
1. 安全,能够对JAR数字签名,只让能够识别数字签名的用户使用里面的东
西.
2. 加快下载速度,在网上使用Applet时,如果不打包,每个文件都需要建立一
个HTTP连接,而打包之后只需要一个HTTP连接就可以了. 3. 压缩,使文件变小.
4. 包封装,能够让JAR包里面的文件依赖于同一版本的类文件. 5. 可移植性,能够在各个平台上直接使用
Java集合类主要就是由上面两个接口派生出来的:Colletction和Map. Map的每项数据都是由key-value来存放的,key不可重复. Java集合分为三大类:
1. Set类,不可重复,无序,通过元素本身来访问.
2. List类,非常像一个数组,有序,并且长度可变,通过索引来访问. 3. Map也是无序,但是级key-value存放,通过key来访问.
还有一个Queue的队列.
上述三个类的实现类常用分别是HashSet,ArrayList,HashMap. Collection接口的方法:
1. boolean add(Object o):用来向集合添加一个元素,如果改变了返回true. 2. Boolean addAll(Colletction c):把c里面的所有元素添加到指定集合. 3. void clear():清楚集合里的所有元素,将长度变为0. 4. boolean contains(Object o):查询是否包含指定元素.
5. boolean containsAll(Colletction c):查询是否包含c集合的所有元素. 6. boolean isEmpty():集合为空返回true.
7. Iterator iterator()(迭代器):返回一个Iterator对象,用于遍历集合. 8. boolean remove(Object o):用于删除集合中的指定元素,成功返回true. 9. boolean removeAll(Colletction c):删除集合c里包含的元素,成功返回true. 10. boolean retainAll(Colletction c):求和集合c的交集,改变了返回true. 11. int size():返回集合里的元素个数. 12. Object[] toArray():把集合转换成一个数组.
Set集合和Collection集合基本完全一样,只是行为不同,Set集合不允许重复,下面介绍Set接口下的三个实现类.
HashSet类特点:
1. 不能保证元素顺序,顺序有可能发生变化.
2. HashSet不是同步的,如果多个线程同时访问一个Set集合,如果多个线程
同时访问一个HashSet,如果有2条或者以上线程同时修改了HashSet集合时,必须通过代码来保证其同步. 3. 集合的元素值可以为null.
向HashSet集合存入一个元素时,会调用该对象的hashCode()方法来得到hashCode值,然后根据这个值来确定再集合中存放的位置.如果有两个元素通过eqauls比较返回true,但是他们的hashCode值不相等,HashSet会把他们存放在不同的位置,也就是可以添加成功.如果两个都相等,那么说HashCode里的两个元素的相等,就不能保存成功.
LinkedHashSet可以使插入的元素顺序以链表保存.
TreeSet类比HashSet类多的方法(TreeSet类的元素是有序的) :
1. Comparator comparator():返回当前Set使用的Comparator,或者返回null,
表示以自然方式排序.
2. Object first():返回当前集合的第一个元素 3. Object last():返回当前集合的最后一个元素
4. Object lower(Object o):返回位于指定元素前的那一个元素. 5. Object higher(Object o):返回位置指定元素后的那一个元素.
6. SortedSet subSet(fromElement,toElement):返回子集合(不包含toElement).
headSet(toElement):小于toElement的子集合. tailSet(fromElement):大于fromElement的子集合.
EnumSet类的static方法:
1. static EnumSet allOf(Class elementType):创建一个枚举类里所有枚举值的
Enumset集合.
2. static EnumSet copyOf(Collection c):使用一个普通集合来创建Enumset集
合.
3. static EnumSet noneOf(Class elementType):创建一个元素类型为指定枚举
类型的空EnumSet.
4. static EnumSet of(E first,E…rest):创建一个包含一个或多个枚举值的
EnumSet,传入的多个枚举值必须属于同一个枚举类.
5. static EnumSet range(E from,E to):创建一个from-to范围内所有枚举值的
EnumSet集合.
Set的上面三个实现类都是线程不安全的,通常在创建的时候使用下面语句来包装Set集合,以防止对Set集合的意外非同步访问:(其余各集合也有对应方法)
SortedSet s = Collections.synchronizedSortedSet(new TreeSet());
List接口根据索引操作元素的方法:
Arrays.toString(Array[] arr)可以将数组的元素转换成String.
1. void add(int index,Object element):在index位置插入一个element. 2. boolean addAll(int index,Collection c):把集合c所有元素都插入到index位
置.
3. Object get(int index):返回index处的索引元素. 4. int indexOf(Object o):返回o在集合中的索引.
5. int lastIndexOf(Object o):返回o在集合中最后一次出现的索引. 6. Object remove(int index):删除并返回index处的元素.
7. Object set(int index,Object element):将index处的元素替换成element,并且
返回新元素.
8. List subList(int fromIndex,int toIndex):返回一个List子集合,不包含toIndex. List的实现类:ArrayList(尽量使用,线程不安全,但是可以调整)和Vector(一般不用,线程安全).这两个实现类里封装了一个动态再分配的Obejct[]数组,每个ArrayList和Vector都有一个capacity属性,当新增元素时,他们的capacity会自动增加,如果需要向集合中添加大量元素时,可以使用ensureCapacity方法一次性增加capacity,提高性能.不指定capacity创建时默认为10.
void ensureCapacity(int minCapacity):将capacity增加mincapacity.
void trimToSize():调整capacity为当前列表大小,可调用该方法来减少存储空间.
固定长度的List:用Arrays里的asList(Object…a)方法可以把一个数组或者指定个数的对象转换成一个List集合,这个List集合是Arrays的内部类ArrayList的实例.