Философия Java


Упражнения - часть 2


  • Создайте класс, содержащий int и char, которые не инициализируются, и распечатайте их значения, чтобы проверить, что Java выполнил инициализацию по умолчанию.
  • Создайте класс, содержащий не инициализированную ссылку на String. Продемонстрируйте, что эта ссылка инициализируется Java значением null.
  • Создайте класс с полем String, которое инициализируется в точке определения, и другое поле, которое инициализируется конструктором. Какие отличия есть в этих двух подходах?
  • Создайте класс с полем static String, которое инициализируется в точке определения, и другое, которое инициализируется в блоке static. Добавьте static метод, который печатает оба поля и демонстрирует, что оба они инициализируются до использования.
  • Создайте класс с String, который инициализируется, используя “инициализацию экземпляра”. Опишите использование этой особенности (отличной от тех, которые описаны в этой книге).
  • Напишите метод, который создает и инициализирует двумерный массив типа double. Размер массива определяется аргументами метода, а диапазон начальных значений определяется начальным и конечным значением, которые так же передаются, как аргументы метода. Создайте второй метод, который будет печатать массив, сгенерированный первым методом. В main( ) проверьте методы, создав и распечатав несколько массивов с различным размером.
  • Повторите Упражнение 19 для трехмерного массива.
  • Закомментируйте строку, помеченную (1) в ExplicitStatic.java и проверьте, что предложение статической инициализации не вызывается. Теперь раскомментируйте одну из строк, помеченных (2) и проверьте, что предложение статической инициализации вызвано. Теперь раскомментируйте вторую строку, помеченную (2) и проверьте, что статическая инициализация происходит лишь однажды.
  • Поэкспериментируйте с Garbage.java, запуская программу, используя такие аргументы, как “gc”, “finalize” или “all”. Повторите процесс и посмотрите, обнаружите ли вы какие-нибудь шаблоны на выходе. Измените код так, чтобы System.runFinalization( ) вызывался перед System.gc( ) и посмотрите результат.



  • Начало  Назад  Вперед



    Книжный магазин