Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объясните разницу в синтаксисе, Array.length и String.length() 
:(
    Опции темы
kamnerobot
Дата 30.5.2010, 04:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.5.2010

Репутация: нет
Всего: нет



 Почему если надо узнать длинну массива пишем, скажем 
 args.length

  а если длинну строки то 
    myString.length()

  
PM MAIL   Вверх
dorogoyIV
Дата 30.5.2010, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



ну так разные ведь вещи!
длинна массива, и метод "количество символов в строке"
PM MAIL   Вверх
dobrolub
Дата 30.5.2010, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



Хороший вопрос. Учитывая, что String не может поменять своё значение, могли бы сделать и просто полем. Метод length() просто возвращает count – приватное поле объекта. То есть вполне могли сделать также как и в array -  "hello world".length и всё тут. Причины действительно на первый взгляд не понятны.
PM   Вверх
53x7u5
Дата 1.6.2010, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2010

Репутация: нет
Всего: нет



Цитата(dobrolub @  30.5.2010,  08:50 Найти цитируемый пост)
Хороший вопрос. Учитывая, что String не может поменять своё значение, могли бы сделать и просто полем. Метод length() просто возвращает count – приватное поле объекта. То есть вполне могли сделать также как и в array -  "hello world".length и всё тут. Причины действительно на первый взгляд не понятны. 


А по-моему это вполне логично. Если строка в памяти хранится вместе с параметром отражающим её длинну - то это будет мартышкин труд. Реально далеко даже не в половине случаев для работы со строками нужно точно знать ее длинну. В итоге программа за счет неиспользуемых данных будет занимать неоправданно больше места в памяти, что так или иначе отразится на быстродействии. В то же время для работы с массивами знать его длинну нужно всегда и обращаться к ней нужно постоянно. Следовательно удобнее для каждого объекта данных хранить параметр эквивалентный длинне массива. 
Таким образом для строк выгоднее использовать метод, а для массива - читать параметр напрямую. Это конечно только догадка, но звучит вроде разумно. 
Поправьте если я не прав.
PM MAIL   Вверх
dobrolub
Дата 1.6.2010, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



это надо посмотреть в исходники java, на конструкторы класса String. Обрати внимание на поле count, а также на метод length();
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0656 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.