2009-11-05 1 views
1

В чем разница между массивом символов и строкой?В чем разница между массивом символов и строкой?

+1

Пожалуйста, укажите ваш вопрос как вопрос. –

+4

На каком языке и сколько баллов ответ заработает? – Lazarus

+0

Наверное, для этого человека характерен запах. –

ответ

4

Ну, строка - это класс, который инкапсулирует поведение, подходящее для строк, например, подстроку, обрезку и т. Д. Фактические данные хранятся внутри как массив символов (по крайней мере, на Java и C#), поэтому существует тесное соединение между ними, но сам класс представляет больше, чем просто персонажей.

На самом деле это больше, например, интернализация, но в этом суть.

1

Строка представляет собой массив символов с удобными методами для управления массивом (поиск, подстрока, сопоставление образцов). На многих языках (например, Java) String неизменен (как номер 5: вы можете назначить его переменной, но вы не можете изменить значение числа, то есть 5 = 1; не будет работать), в то время как массив символов как и любой другой массив, где вы можете изменить содержимое (например, вы можете заменить первый символ массива чем-то еще на array[0] = ..., что невозможно в строке).

Это позволяет компилятору языка выполнять некоторые оптимизации при работе со строками. Например, когда вы запрашиваете подстроку, вы получаете ссылку на массив символов, поддерживающий исходную строку, а новый объект имеет некоторые смещения, чтобы дать вам иллюзию, что это новая строка.

+0

Утверждение, что «вы получаете ссылку на массив символов, поддерживающий исходную строку и новый объект, имеет некоторые смещения ...» может быть или не быть истинным в зависимости от того, какой язык вы используете, и даже иногда это время выполнения и/или версии языка. Например, исходный Visual Basic таким образом обменивался строковыми данными, но VB.NET этого не делает. Каждый подход оптимален в разных ситуациях, поэтому нет ни одного «правильного» ответа, хотя кажется, что большинство новых реализаций языка сегодня предпочитают не делиться строковыми данными, как описано. –

0

String - это класс, объекты которого могут быть созданы и инициализированы формальным вызовом конструктора или прямым назначением.

  1. String s = new String("abc");
  2. String s = "sachin";

В то время как массив символов является непрерывным хранения в памяти были сохранены символы последовательно.

1

массив символов, в основном то, что может быть использовано для хранения нескольких строк и можно переписать этот массив (т.е. изменяемые)

Строка с другой стороны, необходимо создание совершенно новой переменной для перезаписи данных.

Смежные вопросы