Читайте также:
|
|
Решения для выбранных упражнений могут быть найдены в электронной документации The Thinking in Java Annotated Solution Guide, доступной за малую плату на www.BruceEckel.com.
[20] Это может быть озарением. Есть те, кто может сказать: “понятно, это указатель”, но это, предположительно, лежащая в основе реализация. Также, ссылки Java во многом похожи на ссылки C++, чем на указатели с их синтаксисом. В первой редакции книги я изобрел новый термин “handle”, потому что ссылки C++ и ссылки Java имеют некоторое важное различие. Я пришел из C++ и не хочу смущать программистов C++, которые будут составлять самую большую аудиторию для Java. Во второй редакции я решил, что “ссылка” будет наиболее часто используемым термином, и тот, кто переходит с C++ будет иметь много больше для копирования с этой терминологией ссылок, так что они могут прыгнуть сразу на обе ноги. Однако есть люди, которые не согласны даже с термином “ссылка”. Я читал в одной книге, где было “абсолютно неправильно сказано, что Java поддерживает передачу по ссылке”, потому что идентификаторы объектов Java (в соответствии с авторами) реально являются ссылками на объект”. И все реально передается по значению. Так что вы не передаете по ссылке. Вы “передаете ссылку объекта по значению”. Можно было приводить доводы в пользу точности таких замысловатых объяснений, но я думаю, что мой подход упрощает понимание концепции без того, чтобы повредить чему-нибудь (адвокаты языка могут утверждать, что я лгу вам, но я скажу, что я обеспечиваю подходящую абстракцию).
[21] статические методы, которые вы скоро выучите, могут вызываться для класса без объекта.
[22] С обычным исключениями вышеупомянутых “специальных” типов данных boolean, char, byte, short, int, long, float и double. В общем, однако, вы передаете объекты, которые реально означают, что вы передаете ссылку на объект.
[23] Некоторые среды разработки высвечивают программу на экране и закрывают ее прежде, чем вы получите шанс увидеть результаты. Вы можете поместить следующий кусок кода в конец main() для приостановки вывода:
try { System.in.read(); } catch(Exception e) {}Это приостановит вывод, пока вы не нажмете “Enter” (или любую другую кнопку). Этот код включает концепцию, которая будет введена много позже в книге, так что вы не сможете понять его до этого места, но это будет работать.
[24] Инструмент, которым я создавал, используя Python (смотрите www.Python.org), использует эту информацию для выделения файлов кода, помещения их в соответствующие поддириктории и создание мейкфайла.
Дата добавления: 2015-09-11; просмотров: 94 | Поможем написать вашу работу | Нарушение авторских прав |