【发布时间】:2016-09-23 10:08:50
【问题描述】:
我有一个字符串,我需要将其作为 char 数组进行遍历。
当然正常的方法是使用toCharArray()
String str = "Hello";
char[] charArr = str.toCharArray();
现在,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;
}
所以 Java 正在内存中创建一个 char[] 类型的新对象,并将字符串对象复制到新对象中。
我的问题是是否可以在不复制数组的情况下将字符串用作 char[]。我的目的是节省内存空间。如果这不可能,那有什么理由吗?
提前致谢!
【问题讨论】:
-
传递对一个应该是不可变对象的可变
char[]数组的直接引用将是一个非常糟糕的主意,特别是如果所讨论的不可变对象是String类型,它必须履行与安全相关的角色。 -
如果你想节省内存空间,不要问
char[]数组。你没有解释为什么你认为你需要它。 -
我需要一个数组,以便可以按索引遍历它。但是,我没有意识到并且 Nicolas Filotto 指出的是 Strings 只是一个将字符串存储在
char[]数组中的类。多伊!初学者错误:)