Dav*_*vid 5 java string implementation
我一直在看实现,我不明白为什么有偏移.我认为这很重要.
我正在参加Sedgewick教授的算法课程,现在我们正在讨论Strings.在演讲中他简要讨论了字符串的实现,但他没有说明为何有偏移(注意,如果讲座不在线,我肯定会问).
似乎当一个人在实现中创建一个String时,它会被赋予一个偏移量,而我似乎无法理解为什么需要一个.即使是子字符串的目的,我也不太理解为什么你会有一个偏移量.例如,显然如果你创建一个字符串"David",它实际上['X', 'X', 'D', 'a', 'v', 'i', 'd', 'X']或者是那种性质的东西,它被'X's 所抵消.为什么是这样?
在需要从另一个更长的字符串派生字符串的情况下,这可能很有用,类似于substring().
在这种情况下,可以使用相同(不可变)的后备阵列,同时调整偏移和长度,以节省内存并优化性能.
在JDK7中不再是这种情况.
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |