深入JavaSE
文章平均质量分 88
深入学习JavaSE的笔记
起名方面没有灵感
前世大厂架构师、上市公司ceo,被小人陷害,重生为24年应届毕业生,点个关注,看我如何逆风翻盘。
展开
-
完蛋!我被ConcurrentHashMap源码包围了!(一)
是一个线程安全的HashMap,在JDK1.7与JDK1.8,无论是实现还是数据结构都会有所不一样。想学学习一个类的源码,就必须由浅入深,先从构造方法开始学习。触发扩容机制的触发,主要涉及两个方法``treeifyBin。将一个键值对放进Map的时候,我们通常调用。在进入源码学习之前,先回忆一下。简单使用如上,不过多赘述。tryPresize`方法。对于取值,通常都是通过。一样的面试高频考点。原创 2023-11-25 17:17:07 · 235 阅读 · 0 评论 -
【JavaSE】final、finally 和 finalize 有什么区别?
在上述代码中,try块包含可能会引发异常的代码,catch块包含捕获异常并执行适当的处理代码的语句。"finally"是Java中的一个关键字,用于定义在try-catch块之后执行的代码块。方法是一个特殊的方法,它被用来在对象被垃圾回收之前进行一些清理操作。总之,finally关键字用于定义始终执行的代码块,以确保必要的清理操作可以在任何情况下都会被执行。方法执行期间,该对象被重新引用了,那么这个对象就不再是垃圾对象了,即它被“复活”了。具体来说,当一个对象变成垃圾对象时,JVM会调用该对象的。原创 2023-03-31 15:57:46 · 397 阅读 · 1 评论 -
【JavaSE】泛型中的通配符
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。在定义泛型类、泛型方法、泛型接口的时候会经常碰到很多泛型通配符,比如 T,E,K,V 等等。?表示不确定的 java 类型,用作 参数类型、字段类型、局部变量类型,有时作为返回类型(但请避免这样做)原创 2023-03-21 22:48:08 · 531 阅读 · 0 评论 -
【JavaSE】深入HashMap
HashMap是Java中最常用的集合框架。在JDK1.7的时候,HashMap的底层由数组和链表组成。数组是HashMap的主体,而链表是为了解决哈希冲突而存在的。在JDK1.8的时候,HashMap的底层由数组、链表和红黑树组成。红黑树的出现是为了解决因哈希冲突导致的链表长度过长影响HashMap性能的问题。红黑树搜索的空间复杂度为O(logn),而链表却是O(n)。也就是当链表的长度达到一定长度后,链表就会进行树化,当然这是一种笼统说法,具体细节待会深究。原创 2023-02-10 10:35:25 · 913 阅读 · 3 评论 -
【JavaSE】fail-fast与fail-safe源码分析
快速失败(fail-fast),快速失败是Java集合的一种错误检测机制。出现场景:线程A在使用迭代器遍历一个集合对象的时候,线程B对集合对象的内存进行了操作(增加、删除、修改),这时候会抛出原理:就拿ArrayList来说,ArrayList继承了一个抽象类,这个抽象了中有一个成员变量,这个变量是记录集合被修改的次数的。集合使用迭代器进行遍历的时候,每当迭代器使用之前,会先检测modCount变量是否为值,是的话就遍历;否则抛出异常。注意:这里抛出异常的判断条件为modCount变量是否为。原创 2023-02-07 06:00:00 · 432 阅读 · 2 评论 -
【JavaSE】ArrayList的扩容机制源码分析
ArrayList是Java集合框架中比较常用的一个数据结构了,它底层是基于数组实现的。数组是固定大小的,但是ArrayList的扩容机制可以实现容量大小的动态变化。数组的容量是在定义的时候确定的,如果数组满了,再插入,就会数组溢出。所以在插入时候,会先检查是否需要扩容,如果当前容量+1超过数组长度,就会进行扩容。ArrayList的扩容是创建一个1.5倍的新数组,然后把原数组的值拷贝过去。ArrayList添加元素有下面两种方式下面进行源码分析ArrayList扩容通常为原数组大小的1.5倍,并且。原创 2023-02-01 17:22:24 · 493 阅读 · 1 评论 -
【JavaSE】浅析String与StringTable
String类是开发中经常使用的一个类。对String稍加理解的话,都会听到这样的一个词——字符串常量池(也叫StringTable)是用来存放字符串常量的,当我们使用相同字符串对象的时候,就不需要重新创建字符串对象,而是直接在常量池中获取,这一点和Integer的缓存有点类似。原创 2023-01-22 13:28:56 · 946 阅读 · 0 评论 -
【JavaSE】深入理解Integer缓存原理
Integer类在对象中包装了一个基本类型int的值。Integer类对象包含一个int类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。首先,不仅仅是Integer类型有缓存常量池这个说法。Byte,Short,Integer,Long,Character都有缓存常量池。Byte,Short,Integer,Long为 缓存范围 -128 到 127Character缓存范围为 0 到 127。原创 2023-01-07 14:05:25 · 1241 阅读 · 0 评论