Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Упражнения

Читайте также:
  1. Артикуляционные упражнения для растягивания уздечки языка
  2. Базовые упражнения на меткость
  3. Базовые упражнения на меткость
  4. БЕЗОПАСНЫЕ И УДОБНЫЕ УПРАЖНЕНИЯ ВО ВРЕМЯ ГРУДНОГО ВСКАРМЛИВАНИЯ
  5. Благочестивые упражнения во время молитвы и расслабления духовного.
  6. Глава 18. УПРАЖНЕНИЯ ПО ПОВЫШЕНИЮ УВЕРЕННОСТИ В СЕБЕ
  7. Дыхательные Упражнения Вазы
  8. Задачи и упражнения
  9. Занятие 10. Одноатомные спирты. Тест по теме «Одноатомные спирты». Задачи и упражнения на одноатомные спирты.
  10. Звуковые упражнения

Решения для выбранных упражнений могут быть найдены в электронной документации The Thinking in Java Annotated Solution Guide, доступной за малую плату на www.BruceEckel.com.

  1. Создайте класс с конструктором по умолчанию (который не принимает аргументов), печатающий сообщение. Создайте объект этого класса.
  2. Добавьте перегруженный конструктор к Упражнению 1, который принимает аргумент типа String и печатает его наряду с вашим сообщением.
  3. Создайте массив ссылок на объекты вашего класса из Упражнения 2, но не создавайте объекты для помещения их ссылок в массив. Когда вы запустите программу, обратите внимание, есть ли сообщения об инициализации, которые печатаются при вызове конструктора.
  4. Завершите Упражнение 3, создав объекты, и присоедините их к ссылкам в массиве.
  5. Создайте массив из объектов String и присоедините строку к каждому элементу. Распечатайте массив, используя цикл for.
  6. Создайте класс с названием Dog с перегруженным методом bark( ). Этот метод должен перегружаться, основываясь на различных примитивных типах данных, и печатать различные типы лая, завывания и т.п., в зависимости от того, какая перегруженная версия вызвана. Напишите main( ), который вызывает различные версии.
  7. Измените Упражнение 6 так, чтобы два разных перегруженных метода имели два аргумента (двух различных типов), но в разном порядке. Проверьте как это работает.
  8. Создайте класс без конструктора, а затем создайте объект этого класса в main( ) для проверки того, что конструктор по умолчанию синтезируется автоматически.
  9. Создайте класс с двумя методами. В первом методе вызовите второй дважды: первый раз без использования this, а второй раз, используя this.
  10. Создайте класс с двумя (перегруженными) конструкторами. Используя this, вызовите второй конструктор внутри первого.
  11. Создайте класс с методом finalize( ), который печатает сообщение. В main( ) создайте объект вашего класса. Объясните поведение вашей программы.
  12. Измените Упражнение 11 так, чтобы ваш finalize( ) вызывался всегда.
  13. Создайте класс, называемый Tank, который может быть заполнен и опустошен, и имеет смертельное состояние, при котором он должен быть опустошен во время очистки объекта. Напишите finalize( ), который проверяет смертельное состояние. В main( ) проверьте возможные сценарии, которые возникают при использовании вашего Tank.
  14. Создайте класс, содержащий int и char, которые не инициализируются, и распечатайте их значения, чтобы проверить, что Java выполнил инициализацию по умолчанию.
  15. Создайте класс, содержащий не инициализированную ссылку на String. Продемонстрируйте, что эта ссылка инициализируется Java значением null.
  16. Создайте класс с полем String, которое инициализируется в точке определения, и другое поле, которое инициализируется конструктором. Какие отличия есть в этих двух подходах?
  17. Создайте класс с полем static String, которое инициализируется в точке определения, и другое, которое инициализируется в блоке static. Добавьте static метод, который печатает оба поля и демонстрирует, что оба они инициализируются до использования.
  18. Создайте класс с String, который инициализируется, используя “инициализацию экземпляра”. Опишите использование этой особенности (отличной от тех, которые описаны в этой книге).
  19. Напишите метод, который создает и инициализирует двумерный массив типа double. Размер массива определяется аргументами метода, а диапазон начальных значений определяется начальным и конечным значением, которые так же передаются, как аргументы метода. Создайте второй метод, который будет печатать массив, сгенерированный первым методом. В main( ) проверьте методы, создав и распечатав несколько массивов с различным размером.
  20. Повторите Упражнение 19 для трехмерного массива.
  21. Закомментируйте строку, помеченную (1) в ExplicitStatic.java и проверьте, что предложение статической инициализации не вызывается. Теперь раскомментируйте одну из строк, помеченных (2) и проверьте, что предложение статической инициализации вызвано. Теперь раскомментируйте вторую строку, помеченную (2) и проверьте, что статическая инициализация происходит лишь однажды.
  22. Поэкспериментируйте с Garbage.java, запуская программу, используя такие аргументы, как “gc”, “finalize” или “all”. Повторите процесс и посмотрите, обнаружите ли вы какие-нибудь шаблоны на выходе. Измените код так, чтобы System.runFinalization( )вызывался перед System.gc( ) и посмотрите результат.

 

 

[27] В части литературы по Java от Sun они говорят об этом неуклюжим, но описательным именем “конструктор без аргументов”. Термин “конструктор по умолчанию” был в использовании уже много лет, поэтому он используется и сейчас.

[28] Одна из причин, по которой это возможно, если вы передаете ссылку на объект в static метод. Поэтому, через ссылку (которая теперь аналогична this), вы можете вызвать не static методы и получить доступ к не static полям. Но обычно, если вы хотите сделать что-то подобное, вы сделаете обычный не static метод.

[29] Термин, который был введен Bill Venners (www.artima.com) во время семинара, который мы с ним проводили вместе.

[30] В отличие от этого, C++ имеет список инициализирующих конструкторов, который является причиной инициализации до попадания в тело конструктора и является обязательным для объектов. Смотрите Thinking in C++, 2nd edition (доступную на CD ROM, поставляемый с книгой и на www.BruceEckel.com).

[31] Смотрите Thinking in C++, 2nd edition о более полном описании агрегатной инициализации в C++.

 


Дата добавления: 2015-09-11; просмотров: 9 | Нарушение авторских прав

Упражнения | Гарантированная инициализация при использовании конструктора | Перегрузка методов | Перегрузка с помощью примитивных типов | Очистка: финализация и сборщик мусора | Вы должны выполнять очистку | Указание инициализации | Инициализация статических данных | Инициализация массива | Package: модуль библиотеки |


lektsii.net - Лекции.Нет - 2014-2020 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав