我实际上对 Java 中字符串的编码感到困惑。我有一些问题。如果您知道答案,请帮助我:
1)Java字符串在内存中的本机编码是什么?当我写作时String a = "Hello"
将以哪种格式存储?由于 Java 是独立于机器的,我认为系统不会进行编码。
2)我在网上读到“UTF-16”是默认编码,但我很困惑,因为当我写这个的时候int a = 'c'
我得到了 ASCII 表中字符的编号。那么ASCII和UTF-16是一样的吗?
3)我也不确定内存中字符串的存储取决于什么:操作系统,语言?
Java 在内部将字符串存储为 UTF-16。
-
“默认编码”不太正确。 Java 在内部将字符串存储为 UTF-16,但外部使用的编码(“系统默认编码”)因平台而异,甚至可以通过某些平台上的环境变量等更改。
ASCII 是 Latin 1 的子集,而 Latin 1 是 Unicode 的子集。 UTF-16 是 Unicode 的一种编码方式。所以如果你执行你的int i = 'x'
测试 ASCII 范围内的任何字符,您将获得 ASCII 值。然而,UTF-16 可以表示比 ASCII 更多的字符。
-
来自java.lang.Character 文档 http://download.oracle.com/javase/6/docs/api/java/lang/Character.html#unicode:
Java 2 平台在 char 数组以及 String 和 StringBuffer 类中使用 UTF-16 表示形式。
因此,作为 Java 2 平台的一部分,这些类使用 UTF-16 进行定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)