Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 10.07.2006
Откуда: Moscow
Сижу изучаю пособие по самоподготовке. И там есть вопрос для самопроверки

Of the following scenarios, which would be a good reason to use the String-
Builder class instead of the String class?
A. When building a string from shorter strings
B. When working with text data longer than 256 bytes
C. When you want to search and replace the contents of a string
D. When a string is a value type

По моему мнению подходят и A и С. Так как в случае ответа C при вызове Replace создается новая строка и если слева нет знака присваивания другой переменной, то переменной для которой вызывался этот метод по умолчанию присваивается ссылка на новую строку. Для варианта A на мой взгляд есть исключение, когда лишних строк не создается, на примере кода (C#)
Код:
...
string temp1 = "1";
string temp2 = "2";
string temp3 = "3";

string result = temp1 + temp2 + temp3;
...


Если я не ошибаюсь, то в этом случае никаких лишних строк не создается, разве нет?

А в случае Replace новая строка создается всегда, но в ответах написано

A. Correct: Using the String type to construct a dynamic string can result in a
lot of temporary strings in memory because the String type is immutable.
Therefore, using the StringBuilder class is preferable.
B. Incorrect: Strings are limited to 32,767 bytes, not 256 bytes.
C. Incorrect: You can search and replace with a standard String class.
D. Incorrect: Strings are never value types; they are reference types.



Партнер
 

Member
Статус: Не в сети
Регистрация: 10.12.2003
UnixMe
Цитата:
и если слева нет знака присваивания другой переменной, то переменной для которой вызывался этот метод по умолчанию присваивается ссылка на новую строку.

Это неверно.
Цитата:
Если я не ошибаюсь, то в этом случае никаких лишних строк не создается, разве нет?
Создается временная строка temp1 + temp2. Операции выполняются по-порядку, а не все сразу.


 

Member
Статус: Не в сети
Регистрация: 10.07.2006
Откуда: Moscow
theone
Спасибо за ответ!


 

Member
Статус: Не в сети
Регистрация: 10.07.2006
Откуда: Moscow
Возник еще вопросик. Не хочу создавать новую тему, поэтому напишу здесь.
Вопрос из той же серии

1. Which of the following encoding types would yield the largest file size?
A. UTF-32
B. UTF-16
C. UTF-8
D. ASCII

Варианты A и B имееют фиксированный размер одного символа (4 байта и 2 байта, соответсвенно), тогда как в случае UTF-8 размер одного символа может быть от 2 до 6 байт (хотя практически не более 4 байт), соотвественно теоретически, правильный ответ C.

Вот что в ответах
Correct Answer: A
A. Correct: UTF-32 has the largest byte size and yields the largest file size.
B. Incorrect: UTF-16 has a smaller byte size than UTF-32.
C. Incorrect: UTF-8 has a smaller byte size than UTF-32.
D. Incorrect: ASCII has a smaller byte size than UTF-32

Понятно, что на данный момент в реальных приложениях файл закодированный в UTF-8 как минимум не будет большим по размеру чем файл, закодированный в UTF-32, но тем не менее, по определению кодировки, допускается возможность, что файл в кодировке UTF-8 может обладать большим размером. Я в чем то не прав?


 

Member
Статус: Не в сети
Регистрация: 10.12.2003
UnixMe писал(а):
Понятно, что на данный момент в реальных приложениях файл закодированный в UTF-8 как минимум не будет большим по размеру чем файл, закодированный в UTF-32, но тем не менее, по определению кодировки, допускается возможность, что файл в кодировке UTF-8 может обладать большим размером. Я в чем то не прав?

Хм... странные рассуждения. Такой пример: допустим, ты можешь усердно работать, и получать стабильный зароботок (UTF-32). Или можешь не работать, а играть в лотерею (UTF-8), и при этом есть маленькая вероятность заработать больше. По твоей логике получается выгоднее играть в лотерею?

Ну это так, пример. А по делу: если, например, взять случайную выборку из N текстовых файлов со всех компьютеров мира, и закодировать все сначала в UTF-8, а затем в UTF-32, то я уверен, что в первом случае суммарный размер будет меньше. Это даже если появятся символы, требующие для кодирования больше 4-х байт. Но т.к. их пока не существует, то я думаю однозначно правильный ответ - UTF-32.


 

Member
Статус: Не в сети
Регистрация: 10.07.2006
Откуда: Moscow
theone
В чем то согласен, но в вопросе никаких уточнений нет. И это не единичные случаи попадания на спорные вопросы. Во всем виновата неодназначная пендостанская логика :( Я вообще порой тупею от постановки их вопросов.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan