Skip to content

Commit

Permalink
vault backup: 2023-03-29 20:57:09
Browse files Browse the repository at this point in the history
Affected files:
inbox/Class Character.md
notes/programming/Class String.md
notes/programming/Java 字符与字符串.md
notes/programming/Unicode.md
notes/programming/字符编码.md
  • Loading branch information
615lyw committed Mar 29, 2023
1 parent c9de17b commit 4459d7c
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 13 deletions.
Empty file added inbox/Class Character.md
Empty file.
2 changes: 1 addition & 1 deletion notes/programming/Class String.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public final class String implements java.io.Serializable, Comparable<String>, C

## JDK 9 中为什么 String 底层存储由 `char[]` 改为 `byte[]`

绝大部分字符串对象只包含 Latin-1 可表示的字符,Latin-1 编码方案下,byte 占一个字节 (8 位),char 占用 2 个字节(16),byte 相较 char 节省一半的内存空间。
绝大部分字符串对象只包含 Latin-1 可表示的字符,Latin-1 编码方案下,byte 占一个字节 (8 位),char 占用 2 个字节(16),byte 相较 char 节省一半的内存空间。

## String 具有不变性含义

Expand Down
10 changes: 6 additions & 4 deletions notes/programming/Java 字符与字符串.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
date created: 2022-03-31, 14:03:48
date modified: 2022-06-08, 14:59:30
date modified: 2023-03-29, 20:50:48
---

# Meta
Expand All @@ -16,11 +16,13 @@ date modified: 2022-06-08, 14:59:30

# Java 字符与字符串

`char` 为基本数据类型,大小为 2 字节,`Class Character` 为其包装类。
`char` 为基本数据类型,大小为 2 字节,[[Class Character]] 为其包装类。

> **更新(2022-05-25)**:char 保存的是字符的 [[UTF-16]] 编码。之前以为是 Unicode Code Point,后参考 《Java 核心技术卷 I- 第三章 - 数据类型 -Unicode 与 char》以及 UFT-16 编码方式,发现在 BMP 层字符的 Unicode Code Point 恰好等于 UTF-16 编码后的 Code Unit。
> **更新(2022-05-25)**:char 保存的是字符的 [[UTF-16]] 编码!
>
> 之前以为是 Unicode Code Point,后参考 《Java 核心技术卷 I- 第三章 - 数据类型 -Unicode 与 char》以及 UFT-16 编码方式,发现在 BMP 层字符的 Unicode Code Point 恰好等于 UTF-16 编码后的 Code Unit。
字符的 Unicode 码点与字符的二进制编码序列中间还存在一层 Unicode 编码实现方案([[Unicode#实现方式]])。
字符的 Unicode Code Point 与字符的二进制编码序列中间还存在一层 Unicode 编码实现方案([[Unicode#实现方式]])。

一个英文字符或一个中文字符都可以用一个 `char` 表示。

Expand Down
4 changes: 2 additions & 2 deletions notes/programming/Unicode.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
date created: 2022-03-24, 16:59:21
date modified: 2022-05-25, 21:50:03
date modified: 2023-03-29, 20:45:09
---

# Meta
Expand All @@ -18,7 +18,7 @@ date modified: 2022-05-25, 21:50:03

# Unicode

Unicode 只是一个字符集,给每个字符定义了一个唯一整数,即码点(Code Point),但没有规定如何对字符进行编码。
Unicode 只是一个字符集,给每个字符定义了一个唯一整数,*码点*(Code Point),但没有规定如何对字符进行编码。

字符 Unicode 书面表示法:`U+` 紧接一组十六进制的数字,BMP 层只需 4 个数字,其他层需要更多数字。

Expand Down
25 changes: 19 additions & 6 deletions notes/programming/字符编码.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
---
date created: 2022-03-24, 17:11:47
date modified: 2023-03-29, 20:44:39
---

# Meta

- alias:
- parent ::
- siblings ::
- child ::
- refs:
- [字符编码笔记:ASCII,Unicode 和 UTF-8 - 阮一峰的网络日志](https://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html)
- [Java 的字符编解码及CodePoint · 奔跑的锅炉](https://blog.boileryao.com/2018/11/java-encoding-and-whats-codepoint)
- [彻底弄懂Unicode编码 - 李宇仓 | Li Yucang](https://liyucang-git.github.io/2019/06/17/%E5%BD%BB%E5%BA%95%E5%BC%84%E6%87%82Unicode%E7%BC%96%E7%A0%81/)

---

# 字符编码

## 为什么需要字符编码?
Expand All @@ -7,14 +25,9 @@
## 编码&解码概念

编码:字符 -> 二进制序列

解码:反之

## 计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号?

编码实现方式会表明,几个字节表示一个字符。可参考 [[UTF-8]] 编码方式。

# 参考

- [字符编码笔记:ASCII,Unicode 和 UTF-8 - 阮一峰的网络日志](https://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html)
- [Java 的字符编解码及CodePoint · 奔跑的锅炉](https://blog.boileryao.com/2018/11/java-encoding-and-whats-codepoint)
- [彻底弄懂Unicode编码 - 李宇仓 | Li Yucang](https://liyucang-git.github.io/2019/06/17/%E5%BD%BB%E5%BA%95%E5%BC%84%E6%87%82Unicode%E7%BC%96%E7%A0%81/)

0 comments on commit 4459d7c

Please sign in to comment.