- 博客(6)
- 收藏
- 关注
原创 Java volatile 原理解析
用 volatile 修饰的变量能够保证其对所有线程的可见性,要理解这一点,我们首先需要了解 Java 的内存模型。
2024-09-04 00:38:12
469
原创 Java 类加载机制分析
/ 传入 .class 文件的绝对路径,加载 Class// 重写了 findClass 方法@Overrideif (!= -1) {
2024-09-04 00:35:36
479
原创 Java 序列化Serializable 及 transient 关键字解读
java 中的 Serializable 接口是用于实现对象的功能。那么什么是序列化和反序列化呢?通过序列化,能够将当前 java 对象保存至文件,或通过网络传输,并在需要时通过反序列化进行恢复。
2024-09-04 00:31:19
182
原创 你所不知的 java 枚举
枚举常量都是 static 类型的,在枚举类加载完成后,会进行枚举常量的初始化,之后枚举类无法再实例化和修改。java 的类加载、初始化过程是线程安全的,因此创建一个 enum 是线程安全的。从编译器、JVM,再到 java 内部设计,层层把关,封死了实例化枚举类的这一企图。,并且显示定义的枚举构造函数经编译器后,都会被添加 name 和 ordinal 2个参数,用以调用父类 Enum 的构造函数。其次,所有的枚举都继承了一个基类 Enum ,该基类为枚举提供了一些通用方法。
2024-09-04 00:26:40
341
原创 为什么不能在foreach循环中修改集合?
阿里巴巴JAVA开发手册》中有这样一条:不要在 foreach 循环里进行元素的 add / remove 操作,remove 元素使用 Iterator 方式。经测试,当在 foreach 循环中 add / remove 集合元素,可能会抛出 ConcurrentModificationException 异常,下面介绍进行详细说明。
2024-09-04 00:20:20
518
原创 java8 lambda 表达式详解
function 包下的部分接口使用了泛型,具有很强的通用性,在自定义函数式接口前,不妨去这个包下找找有没有能用的。lambda 表达式的参数可以通过上下文推断,如果需要显示声明一个参数的类型,则必须为所有的参数声明类型。在执行 lambda 表达式时,会自动创建一个实现了目标函数式接口的类实例,该类实例是一个匿名内部类。: 在 Java 8 之前,接口的所有方法都是抽象方法,在 Java 8 中新增了接口的默认方法。函数式接口是仅含一个抽象方法的接口,但可以指定 Object 定义的任何公有方法。
2024-09-04 00:17:41
814
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人