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的int占了4个字节,32位(其中第32位,也就是最高位是符号位,正数为 0, 负数为 1,剩下的31位是用来表示数字部分)
最大值:Integer.MAX_VALUE= 2 的 31 次方 - 1 = 2147483648 - 1 = 2147483647
最小值:Integer.MIN_VALUE= Integer.MAX_VALUE + 1 =-2147483648
Exception和Error有什么区别?
NoClassDefFoundError和ClassNotFondException区别?
- NoClassDefFoundError 是Error,是指一个class在编译时存在,在运行时找不到了class文件了;
- ClassNotFoundException 是个Exception,是使用类似Class.foName()等方法时的异常检查。
谈谈final、finally、 finalize有什么不同?
- final 可以用来修饰类、方法、变量。final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)。
- finally 则是 Java 保证重点代码一定要被执行的一种机制。常用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC 连接、保证 unlock 锁等动作。
- finalize 是Object 的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收。目前finalize已经不推荐使用,并且在 JDK 9 开始被标记为 deprecated。
强引用、软引用、弱引用、幻象引用有什么区别?
String、StringBuffer、StringBuilder有什么区别?
|
线程安全 |
序列化 |
默认长度 |
增长倍数 |
其他 |
String |
线程安全 |
支持序列化 |
0 |
- |
JDK9之前char数组实现,JDK9以后用Byte动态数组实现,final类不可继承 |
StringBuffer |
线程安全 |
支持序列化 |
16 |
2n+2 |
JDK9之前char数组实现,JDK9以后用Byte动态数组实现 |
StringBuilder |
线程不安全 |
支持序列化 |
16 |
2n+2 |
JDK9之前char数组实现,JDK9以后用Byte动态数组实现 |
"=="是比较的内存地址,equals是Object的方法,默认是比较两个对象内存地址,具体看对象是否重写equals方法。
- 需要使用自定义对象进行排序或者比较时候需要重写hashCode() 和 equals()方法,如:HashMap中的key为自定义对象,
集合
List子类
List |
实现 |
默认容器大小 |
容量扩充 |
线程是否安全 |
元素是否可以为null |
是否支持序列化 |
优势 |
Vector |
数组实现 |
10 |
2倍 |
安全 |
可以 |
否 |
已经基本不再使用 |
ArrayList |
数组实现 |
10 |
1.5倍 |
不安全 |
可以 |
是 |
查找效率高,插入或删除元素效率低 |
LinkedList |
双向循环链表 |
0 |
不需要扩容 |
不安全 |
可以 |
是 |
插入删除效率高,查找效率低 |
Set子类
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 |
支持 |
|
扩展阅读