Skip to content

Commit 423819d

Browse files
committed
update blog
1 parent 1b198a4 commit 423819d

3 files changed

Lines changed: 4 additions & 8 deletions

File tree

src/content/posts/20250728/20250728.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ category: 原创
77
draft: false
88
---
99

10-
一、堆与字符串常量池
10+
## 一、堆与字符串常量池
1111
堆是 Java 虚拟机中存储对象实例和数组的内存区域。
1212
字符串常量池(String Pool)是 JVM 专门为字符串字面量分配的区域,用于存放所有用双引号声明的字符串常量,以及运行时调用 `intern()` 方法生成的字符串。常量池中的相同内容只保存一份,多个引用会指向同一个对象,从而节省内存并提升效率。
1313

1414
![在这里插入图片描述](./image.png)
1515

1616
字符串池能够成立的前提是 **String 对象不可变**,这样多个引用共享同一对象才不会互相影响;若可变,则一个引用修改会影响所有引用,显然不可行。
1717

18-
二、Java 创建字符串对象的两种方式
18+
## 二、Java 创建字符串对象的两种方式
1919

2020
1. **字面值方式**
2121

@@ -37,14 +37,14 @@ System.out.println(str1 == str2); // false
3737

3838
`new String("aaa")` 时,若常量池无 `"aaa"` 会先创建,然后**无论是否存在**,都会在堆中新建一个 `"aaa"` 对象并返回其引用。每次 `new` 都会产生新的堆对象,因此 `==``false`
3939

40-
三、经典面试题:创建了几个对象?
40+
## 三、经典面试题:创建了几个对象?
4141

4242
1. `String s1 = "11";` → 1 个(常量池)。
4343
2. `String s1 = "1" + "1";` → 编译期优化成 `"11"`,1 个(常量池)。
4444
3. `String s1 = new String("11");` → 常量池 1 个 + 堆 1 个 = 2 个。
4545
4. `String s1 = new String("1") + new String("1");` → 常量池 `"1"` 1 个 + 堆 `"1"` 2 个 + 堆 `"11"` 1 个 = 4 个。
4646

47-
四、`String.intern()` 的作用
47+
## 四、`String.intern()` 的作用
4848

4949
* **常量池已存在**:返回常量池中已有的引用,不加入当前对象。
5050

src/content/posts/20250812.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ category: 原创
77
draft: false
88
---
99

10-
# Java 中的接口(Interface)与抽象类(Abstract Class)对比
11-
1210
在 Java 中,接口(Interface)和抽象类(Abstract Class)都是用于定义抽象概念的机制,因此它们都不能直接实例化。
1311

1412
随着 Java 的发展,接口功能不断增强(默认方法、私有方法、静态方法等),而抽象类的角色逐渐被弱化。现代 Java 开发中,接口已经可以替代 **90%** 的抽象类场景,但抽象类仍保留其独特价值。

src/content/posts/20260304/20260304.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ category: 原创
77
draft: false
88
---
99

10-
# HashMap 中如何用位运算来提高性能
11-
1210
在 Java 开发中,HashMap 是最常用的数据结构之一。为什么要求容量必须是 2 的幂,以及如何使用位运算替代取模运算,是理解 HashMap 高性能设计的关键。
1311

1412
## 一、HashMap 的基本设计

0 commit comments

Comments
 (0)