Java可以基于UTF-8,比如' Go'是什么?

时间:2015-05-21 15:19:04

标签: java utf-8

Java本身就是UTF-16。我知道有办法转换为UTF-8。

由于Unix已经基于UTF-8(仅引用它,因为Java主要在  nix上运行),Java本身进入UTF-8竞技场有多困难,就像其他人一样世界倾向于提高效率?

是否会涉及完全重写语言?

1 个答案:

答案 0 :(得分:1)

UTF-8的问题在于您无法使用O(1)性能实现charAt方法。世界上有许多依赖于此的代码。类似的东西:

for(int i=0; i<string.length(); i++) {
    char c = string.charAt(i);
    ...
}

如果切换到UTF-8,查找第i个字符将是O(n),因此这样的代码将变为O(n ^ 2),这可能会导致性能灾难。

关于效率,有人建议在Java中恢复compressed strings:仅由ASCII-7字符组成的字符串可以存储在byte[]数组中。据我所知,这个功能正在积极开发,机会将被包含在JDK9中。