目录
Java内存分配... 1
静态区(方法区)1
栈:... 1
堆:... 1
Java Object类的常用方法... 1
LinkedList和ArrayList的优缺点... 2
CRUD的各自的表现... 2
HashSet的contains的判断方法... 2
所有的class和static变量、方法名称、访问权限、字段信息等静态数据部分
栈:保存局部变量的值,包括:
a.用来保存基本数据类型的值;
b.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧。
堆:用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。
1.1 clone():克隆方法 (5)
1.2 equals(Object obj): 判断相等与否 (1)
1.3 finalize(): 对象回收 (3)
1.4 getClass(): 得到运行时的class对象 (4)
1.5 hashCode(): 返回hashcode()值 (2)
1.6 notify():唤醒wait的线程
1.7 notifyAll():唤醒所有wait的线程
1.8 toString(): 对象字符串化 (6)
1.9 wait(): 拿到锁后等待
1.10 wait(longtimeout): 拿到锁后的wait timeout。
1.11 wait(long timeout,int nanos):加上纳秒的wait timeout
关于wait,notify等多线程的详解:
http://pan.baidu.com/s/1pJJrcqJ#path=%252F%25E5%25A4%25A9%25E4%25BA%25AE%25E6%2595%2599%25E8%2582%25B2%252FJavaSe%25E6%25A0%25B8%25E5%25BF%2583%25E5%259F%25BA%25E7%25A1%2580
Create: linkedlist没有空间浪费,如果指定初始化ArrayList的空间大小,则一开始就有空间浪费了。
Retrieve: 按索引下标查的话,Arraylist快。如果是按对象值来查呢,其性能是一样的。
Update: 取决于你的retrieve查找方式,与其雷同
Delete/Add::因为ArrayList的增加或删除,要伴随数组空间的copy,所以Arraylist一般性能要低。
见demo: TestHashSetContains.java
判断某对象是不是在hashset集合中,首先判断hashcode()值是否在hashset当中,如果在则比较在该对象的equals方法。如果不在,则直接加入集合中,即该对象不在集合中。