- 博客(12)
- 收藏
- 关注
原创 Java 多线程笔记
掌握三种创建方式、线程状态、锁机制、线程池参数,足以应对期末、笔试、面试绝大部分题目。System.out.println("线程执行");5. notify() / notifyAll():唤醒等待线程。• sleep:Thread 方法、不释放锁、限时自动唤醒。4. wait():等待,释放锁,需 notify 唤醒。• wait:Object 方法、释放锁、必须别人唤醒。多线程核心就是:并发、共享资源、线程安全、锁、线程池。1. 新建 NEW:new Thread(),未启动。
2026-11-09 10:53:48
59
原创 Java throw:不止是抛出异常,那些容易被忽略的细节
throw new XxxException(msg) 的时候,异常会自动记录当前调用栈,也就是我们 printStackTrace() 看到的一长串,它记录了异常抛出的位置,而不是 new 的位置(绝大多数场景二者一致)。异常创建、填充栈帧开销很大,它的定位是:处理非正常、预期之外的错误,而不是常规分支。摘要:大部分笔记只会对比 throw / throws,本文从执行流、编译约束、栈帧传递、容易踩的冷门坑点入手,结合课堂练习代码,讲清 throw 在执行时到底发生了什么。只有抛出受检异常才强制要求。
2026-11-02 11:07:22
153
原创 优快云笔记:Java Map体系
但整个Map体系远不止这几个高频类,很多小众实现往往能在特定场景大幅简化代码,同时Map接口自带很多容易被忽略的契约,一旦违反就会产生很难复现的隐蔽Bug。Map内部通过entrySet()、keySet()、values()这三个视图,把键、值、键值对包装成集合形式对外暴露。很多初学者疑惑,同样属于集合框架,List、Set都属于Collection,唯独Map单独一套体系。只要key是枚举,优先选择EnumMap,而不是HashMap,这个优化点很多开发都会漏掉。
2026-10-26 10:38:05
83
原创 优快云笔记|被忽略的 add()
很多教程讲集合时,只会简单说一句「add用来添加元素」,但不同集合的add行为、返回值边界、索引合法区间、modCount改动、泛型下的add限制,才是期末和源码阅读容易翻车的地方。原理:Arrays.asList返回的并不是java.util.ArrayList,而是Arrays内部静态类,固定大小,add/remove都不支持。冷门坑点:不少人下意识以为所有集合都能按索引add,HashSet、TreeSet直接不存在add(index,element),编译报错。
2026-10-22 09:04:43
56
原创 【Java学习笔记】List三大实现类详解(ArrayList、LinkedList、Vector)
1. ArrayList:数组、查询快、增删慢、不安全、扩容1.5倍。选择 List 实现类的核心:看底层结构,数组查得快,链表改得快。2. LinkedList:链表、查询慢、增删快、不安全、不扩容。List属于有序、可重复单列集合,可以根据索引操作元素。基于动态数组实现,初始容量10,每次扩容 1.5倍。3. Vector:数组、安全、效率低、扩容2倍。list.get();查询多、遍历多、增删少的场景(开发最常用)基于双向链表实现,无固定容量、无需扩容。
2026-10-12 14:22:13
111
原创 Java泛型集合详解:告别类型转换异常,写出优雅安全的集合代码
在JDK5之前,Java集合是原生态集合,不支持类型限制,存储任意Object对象,取出数据时必须强制类型转换,极易引发ClassCastException类型转换异常。泛型集合:将泛型语法应用在 List、Set、Map 等集合中,通过类型参数<E> 指定集合只能存储固定类型的数据。userList.add(new User("小明", 18));
2026-10-10 13:27:13
159
原创 你真的会用StringBuilder吗?那些教科书不会教的坑
工作久了你会发现,真正出问题的地方,全是课本不提、博主不写的冷门细节。绝大多数场景没问题,但报文拼接、敏感数据、加密字符串场景,真的会出怪事:偶尔多出莫名残留字符。StringBuilder 的底层 char 数组,容量只会越来越大,永远不会自己变小。循环复用、日志拼接、批量处理数据的场景,虚高内存、内存抖动多半就是这个原因。接口字段为 null,没做判断,直接拼接进文本,整段数据废掉。所以敏感数据拼接,我的习惯是:不要复用,直接 new 新的。大循环、单次拼接内容很长的场景,循环内 new 反而更健康。
2026-09-21 14:07:17
170
原创 Java String类万字详解:底层原理、不可变性、常量池、API与面试题全覆盖
String 位于 java.lang 包下,无需手动导包,是Java中代表不可变字符序列的引用类型,不属于八大基本数据类型,却被JVM深度优化,拥有接近基本类型的使用体验。
2026-09-14 13:25:47
181
原创 Java equals 被90%初学者忽略的隐性规则与底层陷阱
本文避开烂大街话术,从源码行为、类型判定、空安全、对称性陷阱、自动生成漏洞五个冷门角度,彻底吃透 Java equals。二、冷门深坑:instanceof 与 getClass() 的重写区别(极少人讲)这也是 IDEA自动生成equals时默认使用Objects.equals 的原因。这些是入门标准答案,但不解决真实报错、不解决集合Bug、不解决隐性不相等问题。三、空指针安全:Objects.equals() 才是真正的细节王者。• getClass():满足对称性、杜绝继承漏洞(正规开发)
2026-09-07 13:38:39
219
原创 Java hashCode() 超详细解析:作用、原理、重写规则、与 equals 关系(通俗易懂版)
hashCode 就是对象的“哈希身份证号”,是一个 int 整数,用来快速区分对象、提高集合查询效率。hashCode() 是 Java Object 类中的本地方法,所有对象默认都拥有。场景:两个内容完全一样的对象,equals 相等,但 hashCode 不同。碰撞是正常现象,JDK 通过链表/红黑树解决,不影响程序正确性,只影响效率。可以,但是所有对象哈希值全部一样,哈希表退化成链表,性能爆炸,严禁使用。持续更新 Java 基础干货~内容相同、相等,但哈希不同 → 哈希集合直接判定为两个对象!
2026-08-31 14:30:39
150
原创 Java知识点全面解析
常用方法:length()长度、equals()比较内容、substring()截取、split()分割。1. 跨平台:依靠JVM虚拟机,一份代码运行在Windows、Linux、Mac;System.out.println("最大值:"+max);System.out.println("Java学习");Java是纯面向对象、跨平台高级语言,核心口号:一次编译,到处运行。支持匹配byte、short、int、char、String、枚举;存储相同类型数据的容器,长度固定,下标从0开始,属于引用类型。
2026-06-16 13:31:13
353
原创 java零基础
本篇笔记专为大一零基础小白整理,涵盖Java环境配置、基础语法、变量数据类型、流程控制、数组、面向对象基础等大一期末考试核心考点,所有代码均可直接运行,知识点通俗易懂,适合课前预习、期末复习、优快云学习存档。3. System.out.println():换行输出,System.out.print():不换行输出。大一Java入门学习");System.out.println(name + "正在学习Java");Java是跨平台、面向对象、编译型+解释型的高级编程语言,核心特点:一次编译,到处运行。
2026-06-16 13:17:21
468
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅