java学习
文章平均质量分 56
java
啊川啦丶
这个作者很懒,什么都没留下…
展开
-
个人对于接口与抽象类的一点理解
接口与抽象类的关系原创 2022-04-16 22:01:23 · 237 阅读 · 0 评论 -
java 反射随笔
学过java反射的都知道对于一个对象的话,可以通过反射调用他的方法,或者去获得他的成员变量的属性今天就来随便聊聊底层 他是如何去获得成员变量的属性的以下内容是个人学习的一些理解学过jvm的同学应该都知道,一个对象在内存中的布局是固定的,先是对象头,然后是实例数据,然后是对齐填充,所以当一个类被编写出来,那么他在内存中的布局也应该是确定住了在32位虚拟机里,对象头是占8个字节,所以从第九个字节开始那么就是实例数据了对于这样子的一个类public class A { private int原创 2021-10-02 22:50:42 · 124 阅读 · 0 评论 -
jdk1.8 HashMap扩容流程源码分析
众所周知啊,jdk1.7和jdk1.8的扩容流程是不一样的,毕竟1.7在并发扩容的情况下可能会发生循环链表,从而导致get方法可能死循环,这个问题在jdk1.8的情况下已经解决了。今天我们来从源码来探究探究他是如何解决的以及一些其他的细节的不同直接上代码:final Node<K,V>[] resize() { // 获得当前的Node数组 Node<K,V>[] oldTab = table; // 获得当前Node数组的长度原创 2021-08-26 13:05:21 · 275 阅读 · 0 评论 -
jdk1.7 HashMap部分源码分析和扩容循环链表分析
众所周知啊,jdk1.7的版本当HashMap扩容的时候,是有可能发生循环链表的情况,我们今天就来探究探究他究竟是如何产生的分析之前,我们先来理清楚几个概念HashMap 1.7采用的数组加链表的形式, 建议读者阅读此文章要有一点hashmap的基本知识我们先来复习一下 jdk1.7 HashMap的相关方法的源码先从put方法开始分析public V put(K key, V value) { // 懒加载 第一次put的时候发现Entry数组为null 然后去初始化 if原创 2021-08-23 14:00:25 · 268 阅读 · 0 评论 -
Java内存模型
在介绍java内存模型之前先说 为什么java需要自己定义一个内存模型,众所周知,java是一个跨平台语言,不是有句话说:一次编译,到处报错,,不对,是到处运行,那么不同平台的的内存模型是会影响代码的运行的,会造成一些很奇怪的错误,于是说,定义一个内存模型来屏蔽不同平台的内存模型的差异是非常重要的。使得开发者只用遵循java内存模型来开发。java内存模型规定了 所有的变量都存储在主内存,每个线程有自己的工作内存,线程对变量的赋值和读取都需要在工作内存中进行,然后在同步回主内存,线程不能直接操作主内存的数原创 2021-08-12 18:34:13 · 93 阅读 · 0 评论