基本类型 大小
类型 | 所占字节 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
float | 4 |
double | 8 |
long | 8 |
char | 2 |
boolean | 2 |
Object类
可以重写hashCode(),toString(),equals(),finalize(),clone(),wait(),notify()/notifyAll()
collection
图片原出处:https://blog.csdn.net/qq_25885525/article/details/80793997
list 有序 可重复
set 无序 不可重复
Vector非常类似ArrayList 是同步的
queue 队列 先进先出
collection的循环删除操作 .foreach方法一定报错,for循环不一定报错,删除之后数组长度i- -,.iterater使用迭代器一定不报错。
Arraylist和Linkedlist区别
Arraylist底层是基于动态数组,根据下表随机访问数组元素的效率高,向数组尾部添加元素的效率高;但是,删除数组中的数据以及向数组中间添加数据效率低,因为需要移动数组。
Linkedlist基于链表的动态数组,数据添加删除效率高,只需要改变指针指向即可,但是访问数据的平均效率低,需要对链表进行遍历。
HashMap,HashTable,ConcurrentHashMap的区别
hashtable在put和get的时候都加了synchronized
hashtable中没有Key为null位置了
concurrentHashMap分段存储数据,默认分成16个段,每段进行加锁,提高并发量。
JDK,JRE,JVM区别
JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)。
jvm(Java Virtual Machine)模拟提供硬件环境。
a.JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。
b.JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。
JDK1.8新特性
- Lambda表达式和函数式接口
- 接口的默认方法和静态方法
- 方法引用 cars.forEach( Car::collide );
- 重复注解,拓宽注解的应用场景
- Lambda表达式和函数式接口
- 更好的类型推断
https://blog.csdn.net/yczz/article/details/50896975
JVM
- 方法区
- 程序计数器
- jvm虚拟机栈
- 本地方法栈
- jvm堆
类加载机制
双亲委托机制:就是某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次追溯,直到启动类加载器,所以最终每个加载请求都会经过启动类加载器。只有当父类加载返回不能加载时子加载器才会进行加载。
https://blog.csdn.net/u013206465/article/details/47170253