У меня есть строка, и мне нужно пройти ее как массив символов. Конечно обычный метод заключается в использовании toCharArray()
Как преобразовать строку в char [] без копирования объекта?
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', который имеет для выполнения соответствующих функций безопасности. – Holger
Если вы хотите сохранить память, не запрашивайте массив 'char []'. Вы не объяснили, почему вы думаете, что вам это нужно. – Holger
Мне нужен массив, чтобы я мог перебирать его по индексу. Однако то, что я не понял и что заметил Николя Филотто, состоит в том, что строки - это просто класс, который хранит строку в массиве 'char []'. Да! Ошибка начинающих :) –