我正在阅读文档StringBuffer,特别是reverse()方法。该文档提到了一些关于 代理对 的内容。在这种情况下,什么是代理对?什么是 低 代理和 高 代理?
StringBuffer
术语“代理对”是指在 UTF-16 编码方案中对具有高代码点的 Unicode 字符进行编码的方法。
在 Unicode 字符编码中,字符被映射到 0x0 和 0x10FFFF 之间的值。
在内部,Java 使用 UTF-16 编码方案来存储 Unicode 文本字符串。在 UTF-16 中,使用 16 位(两字节)代码单元。由于 16 位只能包含从 0x0 到 0xFFFF 的字符范围,因此会使用一些额外的复杂性来存储高于此范围(0x10000 到 0x10FFFF)的值。这是使用称为代理的代码单元对完成的。
代理代码单元在称为“高代理”和“低代理”的两个范围内,这取决于它们在两个代码单元序列的开头还是结尾被允许。