![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java 基础
基础知识点整理
菜鸟gogoing
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap的底层实现原理
我们都知道HashMap在多线程情况下,在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在get时会出现死循环,所以HashMap是线程不安全的。我们来了解另一个键值存储集合HashTable,它是线程安全的,它在所有涉及到多线程操作的都加上了synchronized关键字来锁住转载 2020-11-27 21:24:21 · 1097 阅读 · 0 评论 -
List Set Map 简单认识
List:有序可重复arrayList : 数据结构是数组,查询快,增删慢,线程不安全,效率高Vector:和arrayList 类似,但它是线程安全的。LinkedList :基于双向链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。线程不安全。Set:无序唯一TreeSet :基于红黑树实现,支持有序性操作。HashSet:基于哈希表实现,支持快速查找,但不支持有序性操作。LinkedHashSet:具有 HashSet 的查找效率,并且内部使用双向链表...原创 2020-11-26 21:52:31 · 85 阅读 · 0 评论 -
OverLoad和 OverWrite区别
方法重载(overload)是类本身,方法名相同,参数个数,参数类型以及返回类型不同的多态方法重写(overwrite)是子类与父类之间的多态,子类重写父类方法,方法名,参数个数,参数类型以及返回类型要都相同。...原创 2020-11-26 21:12:32 · 1131 阅读 · 0 评论 -
Object 有哪些公用方法
1.clone()复制对象慎用效率低,且对象中有对象引用,对象引用不能copy。2.toString() 返回此对象的字符串表示形式3.equals()判断值是否相同4.getclass() 返回object的运行类5.wait()导致当前线程等待,同时释放锁,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法。6.notify() 唤醒正在等待对象监听器的单个进程7.notifyAll() 唤醒正在等待对象监听器的所有进程8.hashc...原创 2020-11-26 21:07:58 · 1161 阅读 · 1 评论 -
final、finally 与 finalize的区别
final表示不可变的,它可以用来修饰类,方法和变量。当用final修饰类的时,表明该类不能被其他类所继承。当它修饰方法的时候表示该方法是不能被重写的。当它修饰变量的时候表示该变量的值不能发生变化也就是该变量为一个常量。对于用final修饰的变量我们必须在申明它的时候赋值或者是在构造函数中给它赋值。finally是异常处理中的一个关键字,它只能用在try/catch/finally语句中它一般用于资源释放,比如我们可以在finally块中关闭数据库连接,在这个结构中不管异常有没有发.原创 2020-11-26 20:54:19 · 156 阅读 · 1 评论 -
String StringBuilder StringBuffer 区别
String字符串常量 不可变 线程安全 被声明为final因此不可继承内存使用char数组,数组也被声明final,意味着数组初始化之后不能在引用其他数组,因此不可变。StringBuilder字符串变量可变非线程安全StringBuffer字符串变量可变线程安全内部使用 synchronized关键字进行同步...原创 2020-11-26 20:20:31 · 48 阅读 · 0 评论 -
volatile 关键字的作用 及其原理
volatile作用 :1.保证内存可见性2.禁止指令重新排序保证内存可见性需要知道Java内存模型:如图:每个线程都不是直接操作主内存,而是先拿到自己工作内存中,然后在刷新到主内存中。那么在多线程中,如AB两个线程都需要从主内存中拿变量 i,a先拿到变量,然后+1,变量值还没有刷新到主内存中,此时b线程也从主内存中拿变量 i,然后+1,最终a,b线程都将各自的结果刷新到主内存中,结果 i只遍历了一次,显然不对。究其原因,是因为线程B读取到了变量 i 的脏数据的缘故(...原创 2020-11-26 16:29:33 · 626 阅读 · 0 评论 -
反射及其原理
什么是反射?反射是运行状态中,对任意一个类,都能获取到这个类的所有属性和方法,对任意一个对象都可以调用它的任意一个属性和方法。这种运行时动态获取信息及动态调用对象的方功能叫做反射,也就是反射的机制。反射的原理?简单来说就是 将Java文件保存到本地磁盘,编译Java文件时,生成.class文件,使用Java虚拟机将.class文件加载到内存中。使用反射的时候,首先获取到class类,就可以得到class文件里所有的内容,包含属性、构造方法、普通方法等。属性可以通过field 获取,构造方原创 2020-11-26 08:44:59 · 331 阅读 · 0 评论