Jor*_*ein 7 java string char java-8
我有一个字符串,我需要将其作为char数组遍历.当然通常的方法是使用toCharArray()
String str = "Hello";
char[] charArr = str.toCharArray();
Run Code Online (Sandbox Code Playgroud)
现在,toCharArray()的源代码如下.
public char[] toCharArray() {
// Cannot use Arrays.copyOf because of class initialization order issues
char result[] = new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
Run Code Online (Sandbox Code Playgroud)
因此,Java在char []类型的内存中创建一个新对象,并将字符串对象复制到新对象.
我的问题是,是否可以在不复制数组的情况下将字符串用作char [].我的目的是节省内存空间.如果不可能,有这样的理由吗?
提前致谢!
Jon*_*eet 14
不,不是.不是没有反思,你应该避免.char[]通过反射与字符串中的底层相混淆是一种微妙的错误.您可以使用字符串访问字符串中的单个字符charAt,但如果您确实需要char[],则应该只调用toCharArray.
如果不可能,有这样的理由吗?
第一个原因:封装.该数组是私有实现细节.
第二个原因:不变性.字符串是不可变的,但数组永远不会.所以你可以修改底层的char数组,并且字符串会被突变,这让任何依赖于正常不变性的开发人员都感到惊讶.
| 归档时间: |
|
| 查看次数: |
5871 次 |
| 最近记录: |