gpt4 book ai didi

java - 为什么 SQL 中的 CHAR(1) 占用 1 个字节,而 java 中的 char 占用 2 个字节?

转载 作者:行者123 更新时间:2023-12-01 07:00:48 32 4
gpt4 key购买 nike

我正在阅读 SQL/92(我是新手),它经历了不同的数据类型。其中之一是CHAR,我当然知道它与java中的String非常相似,而不是java中的char。但我们假设它是 CHAR(1)。只有一个字符。

在 SQL/92 中,每个字符是 8 位。然而在java中,一个字符是16位。另外,一个字符一般占用16位不是吗?

请注意,这不是重复的,因为我不是在询问 CHAR 和 VARCHAR 或 SQL char 和 unicode ascii char 之间的区别。

所以我的问题是:为什么 Java 中的 char 是 16 位,而 SQL/92 中的 CHAR(1) 是 8 位?

-谢谢

最佳答案

SQL 和 C 是在支持扩展 ASCII 看起来足够好的时候开发的。它在拉丁语言中确实运行得很好。特别是在美国。

后来,Unicode 根据需要得到了更广泛的异常(exception),因此它可以在更多需要更宽字符的国家/地区使用。 Java 较新开始支持从 0 到 65535 的 Unicode。

注意:从那时起,Unicode 现在需要超过 16 位,并且 Java 支持 UTF-16 来支持更宽的字符,例如:表情符号。

事后看来,char 应该是一个 unsigned int 并且 Character 类现在支持 int 为“代码点”

Java 9+ 现在在字符串中使用每个字符 8 位(如果可以的话)以节省空间。 ;)

关于java - 为什么 SQL 中的 CHAR(1) 占用 1 个字节,而 java 中的 char 占用 2 个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55287146/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com