
JavaSE
文章平均质量分 77
PnJg?
这个作者很懒,什么都没留下…
展开
-
对比 Exception 和 Error,运行时异常与一般异常有什么区别?
Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类。Exception 是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。原创 2023-02-13 22:11:01 · 305 阅读 · 1 评论 -
JVM——虚拟机类加载机制
加载.class文件的方法 简而言之,为类的静态变量赋予正确的初始值。如果前面的步骤都没有问题,那么表示类可以顺利装载到系统中,此时才会开始执行Java字节码。即:到了初始化阶段,才开始真正的执行类中定义的Java程序代码。 在加载一个类之前,虚拟机总是试图加载该类的父类,因此父类的总是在子类之前被调用,也就是会先执行父类的静态变量赋值和静态代码块。是否生成 static + final修饰字段的显示赋值操作到底是在哪个阶段进行赋值 被动使用的例子原创 2022-11-18 13:02:24 · 413 阅读 · 0 评论 -
JVM——内存区域与内存溢出
JVM内存区域学习原创 2022-11-14 15:55:01 · 376 阅读 · 0 评论 -
Java并发
多出了阻塞I/O,指线程在调用阻塞I/O时,实际活由I/O设备完成,此时线程无事可做,只能干等。当其它持锁线程调用notify()或notifyAll()方法,会按照一定规则唤醒等待集合中的。当其它持锁线程调用notify()或notifyAll()方法,会按照一定规则唤醒等待集合中的。当获取锁成功后,但由于条件不满足,调用了wait(long)方法,此时从。当获取锁成功后,但由于条件不满足,调用了wait()方法,此时从。线程,等待线程唤醒后重新争抢锁,争抢成功恢复为。......原创 2022-07-24 12:26:23 · 173 阅读 · 0 评论 -
HashMap的相关问题
hash表可以做到快速查找:查找元素时只需要计算hash值,根据计算出来的下标去对应的表中的下标与元素进行比较,无需从头到尾一个个的去对比。 当多个元素计算出的hash值相同时,根据链接法会接在同一个下标下面,这样hash表可以快速查询的优势就体现不出来了。解决链表长度的方法有两个:扩容、红黑树。 当元素的个数超过当前容量的四分之三就会发生扩容, 扩容之后桶下标要重新计算。如果各个元素的原始hash值都一样,那么无论扩容几次都无法缩减链表长度。这时候只能树化。树化要满足两个条件:链表长度超过树化阈值,固定值原创 2022-07-12 22:00:09 · 481 阅读 · 0 评论 -
集合底层实现
ArrayList,底层封装了一个数组,利用无参创建arrayList对象时,底层数组长度为0,当第一次往集合中添加(第一次调用add方法)元素的时候,触发第一次扩容,创建一个新数组,长度默认为10,把元素存放到新数组,舍弃旧数组。如果存储的元素个数达到数组的长度上限时,触发扩容,扩容大小为原数组的1.5倍。这里的1.5倍是指原数组右移一位,即一半,加上原数组的大小 往arrayList中添加的是一个collection,也会出现不够用的情况。这时候底层实现会在要在的元素数量和下一次扩容的大小二者之间选择一原创 2022-07-12 16:32:25 · 205 阅读 · 0 评论