Java基础
Java
"=="是比较的内存地址,equals是Object的方法,默认是比较两个对象内存地址,具体看对象是否重写equals方法。
String、StringBuffer与StringBuilder
|
线程安全 |
序列化 |
默认长度 |
增长倍数 |
其他 |
String |
线程安全 |
支持序列化 |
0 |
- |
|
StringBuffer |
线程安全 |
支持序列化 |
16 |
2n+2 |
动态数组实现优化String |
StringBuilder |
线程不安全 |
支持序列化 |
16 |
2n+2 |
动态数组实现优化String |
集合
list
List子类
List |
实现 |
默认容器大小 |
容量扩充 |
线程是否安全 |
元素是否可以为null |
是否支持序列化 |
优势 |
Vector |
数组实现 |
10 |
2倍 |
安全 |
可以 |
否 |
已经基本不再使用 |
ArrayList |
数组实现 |
10 |
1.5倍 |
不安全 |
可以 |
是 |
查找效率高,插入或删除元素效率低 |
LinkedList |
双向循环链表 |
0 |
不需要扩容 |
不安全 |
可以 |
是 |
插入删除效率高,查找效率低 |
Set子类
map
Map子类
Map |
实现 |
默认容器大小 |
容量扩充 |
线程是否安全 |
元素是否可以为null |
是否支持序列化 |
优势 |
HashMap |
哈希表实现的 |
16 |
2倍 |
不安全 |
key和value都允许为null,如果key为null,则直接从哈希表的第一个位置table[0]对应的链表上查找。记住,key为null的键值对永远都放在以table[0]为头结点的链表中,当然value=null不一定是存放在头结点table[0]中, |
支持 |
如果单链表中存在与目标key相等的键值对,则将新的value覆盖旧的value |
LinkedHashMap |
哈希表实现的 |
16 |
2倍 |
不安全 |
同HashMap |
支持 |
|
Hashtable |
哈希表实现的 |
16 |
2倍+1 |
安全 |
key,value不可以为null |
支持 |
|
ConcurrentHashMap |
synchronized+CAS操作+Entry+红黑树(Jdk1.8) |
16 |
2倍+1 |
安全 |
key,value不可以为null |
支持 |
|
int-char-long各占多少字节数
类型 |
位数 |
字节 |
byte |
8 |
1 |
char |
16 |
2 |
short |
16 |
2 |
int |
32 |
4 |
long |
64 |
8 |
float |
32 |
4 |
double |
64 |
8 |
网络
本文标题:Java基础
本文链接:https://www.haomeiwen.com/subject/nvwyyftx.html
网友评论