Java本身就是UTF-16。我知道有办法转换为UTF-8。
由于Unix已经基于UTF-8(仅引用它,因为Java主要在  nix上运行),Java本身进入UTF-8竞技场有多困难,就像其他人一样世界倾向于提高效率?
是否会涉及完全重写语言?
答案 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中。