Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » К. Арнольд, Д. Гослинг - Язык программирования Java

К. Арнольд, Д. Гослинг - Язык программирования Java, страница 59

PDF-файл К. Арнольд, Д. Гослинг - Язык программирования Java, страница 59 Языки программирования (53641): Книга - 7 семестрК. Арнольд, Д. Гослинг - Язык программирования Java: Языки программирования - PDF, страница 59 (53641) - СтудИзба2019-09-19СтудИзба

Описание файла

PDF-файл из архива "К. Арнольд, Д. Гослинг - Язык программирования Java", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 59 страницы из PDF

Вы можете частично предотвратить “утечку файлов”, включив в класс метод finalize, внутри котороговызывается close, — таким образом можно быть уверенным, что вне зависимости от качества работы других программистов ваш класс никогдане будет поглощать открытые файлы. Вот как это может выглядеть на практике:public class ProcessFile {private Stream File;// ...public ProcessFile(String path) {File = new Stream(path);}public void close() {if (File != null) {File.close();File = null;}}}protected void finalize() throws Throwable {super.finalize();close();}Обратите внимание: метод close написан так, чтобы его можно было вызвать несколько раз. В противном случае, если бы метод close ужеиспользовался ранее, то при вызове finalize происходила бы попытка повторного закрытия файла, что может привести к ошибкам.Кроме того, в приведенном выше примере следует обратить внимание на то, что метод finalize вызывает super.finalize.

Пусть это войдет у вас впривычку для всех методов finalize, которые вам придется писать. Если не использовать super.finalize, то работа вашего класса завершитсянормально, но суперклассы, для которых не были выполнены необходимые завершающие действия, могут вызвать сбои. Помните, вызов super.finalize — это полезное правило, применяемое даже в том случае, если ваш класс не является расширением другого класса. Помимо того, что этопослужит вам дополнительным напоминанием на будущее, вызов super.finalize в подобных ситуациях позволит в будущем породить класс,аналогичный Process File, от другого суперкласса и при этом не заботиться о переделке метода finalize.В теле метода finalize может применяться конструкция try/catch для обработки исключений в вызываемых методах, но любые неперехваченныеисключения, возникшие при выполнении метода finalize, игнорируются.

Исключения подробно рассматриваются в главе 7.Сборщик мусора может уничтожать объекты в любом порядке, а может и не уничтожать их вовсе. Память будет освобождаться в тот момент,который сборщик мусора сочтет подходящим. Отсутствие привязки к какому-то конкретному порядку позволяет сборщику мусора действоватьоптимальным образом, что позволяет снизить накладные расходы на его работу. Вы можете напрямую вызвать сборщик мусора, чтобы памятьбыла освобождена раньше (см. раздел “Управление памятью”).При завершении работы приложения вызываются методы finalize для всех существующих объектов.

Это происходит независимо от того, чтопослужило причиной завершения; тем не менее некоторые системные ошибки могут привести к тому, что часть методов finalize не будетзапущена. Например, если программа завершается по причине нехватки памяти, то сборщику мусора может не хватить памяти для поиска всехобъектов и вызова их методов finalize. И все же в общем случае можно рассчитывать на то, что метод finalize будет вызван для каждого объекта.2.10.2. Восстановление объектов в методеМетод finalize может “воскресить” объект, снова делая его используемым — скажем, включая его в статический список объектов. Подобныедействия не рекомендуются, но Java не сможет ничего сделать, чтобы предотвратить их.Тем не менее Java вызывает finalize ровно один раз для каждого объекта, даже если данный объект уничтожается сборщиком мусора повторноиз-за того, что он был восстановлен в предыдущем вызове finalize.

Если подобное восстановление объектов оказывается важным для концепциивашей программы, то происходить оно будет всего один раз — маловероятно, чтобы вы добивались от программы именно такого поведения.Если вы действительно считаете, что вам необходимо восстанавливать объекты, попробуйте тщательно пересмотреть свою программу —возможно, вы обнаружите в ней какие-то недочеты. Если же и после этого вы уверены, что без восстановления объектов никак не обойтись, топравильным решением будет дублирование или создание нового объекта, а не восстановление.

Метод finalize может создать ссылку на новыйобъект, состояние которого совпадает с состоянием уничтожаемого объекта. Так как дублированный объект создается заново, принеобходимости в будущем может быть вызван его метод finalize, который поместит еще одну копию объекта в какой-нибудь другой список — этообеспечит выживание если не самого объекта, то его точной копии.2.11.

Метод mainДетали запуска Java-приложений могут отличаться для разных систем, но всегда необходимо указать имя класса, который управляет работойприложения. При запуске программы на Java система находит и запускает метод main этого класса. Метод main должен быть объявлен как public,static и void (то есть не возвращающий никакого значения), и ему должен передаваться один аргумент типа String[]. Приведем пример методаmain, выводящего значения своих параметров:class Echo {public static void main(String[] args) {for (int i = 0; i < args.length; i++)System.out.print(args[i] = “ ”);System.out.println();}}В массиве строк содержатся “аргументы программы”.

Чаще всего они вводятся пользователем при запуске приложения. Например, в системе сиспользованием командной строки — такой, как UNIX или DOS Shell, — приложение Echo может быть вызвано следующим образом:java Echo in hereВ этой команде java является интерпретатором байт-кода Java, Echo — имя класса, а остальные параметры представляют собой аргументыпрограммы. Команда java находит откомпилированный байт-код класса Echo, загружает его в виртуальную машину и вызывает метод Echo.main саргументами, содержащимися в элементах массива String. Результат работы программы будет следующим:in hereИмя класса не включается в число строк, передаваемых main. Оно известно заранее, поскольку это имя класса приложения.Приложение может содержать несколько методов main, поскольку каждый из его классов может иметь такой метод.

Тем не менее в каждойпрограмме используется всего один метод main, указываемый при запуске, — в приведенном выше примере это был метод класса Echo.Присутствие нескольких методов main имеет положительный эффект — каждый класс может иметь метод main, предназначенный для проверкиего собственного кода, что дает превосходную возможность для модульного тестирования класса. Мы рекомендуем пользоваться подобнойтехникой в ваших программах.

/Метод main присутствует во многих примерах, приведенных в этой книге. Ограниченный объем не позволяет намприводить метод main для каждого примера, но обычно мы используем этот метод при разработке собственных классов для нетривиальныхприложений и библиотек./Упражнение 2.14Измените метод Vehicle.main так, чтобы он создавал объекты-машины для владельцев, чьи имена указаны в командной строке, и выводилинформацию о новых объектах.2.12. Метод toStringЕсли объект включает общедоступный (public) метод toString, который не получает параметров и возвращает объект String, то данный методвызывается каждый раз, когда объект этого типа встречается вместо строки в операторе + или +=. Например, следующий фрагмент выводитсодержимое массива небесных тел:static void displayBodies(Body[] bodies) {for (int i = 0; i < bodies.length; i++)System.out.println(i + “: ” + bodies[i]);}Если повнимательнее присмотреться к вызову println, можно обнаружить два неявных приведения к строковым значениям: первое — дляиндекса i и второе — для объекта Body.

Значения всех примитивных типов неявно преобразуются в объекты String при использовании вподобных выражениях.В Java не существует универсального механизма для преобразования значения типа String в объект. Разумеется, вы можете включить в класссвою собственную функцию для подобного приведения.

Обычно для этого используется некий аналог метода fromString, изменяющий текущеесостояние объекта, либо конструктор, принимающий параметр типа String, который определяет исходное состояние объекта.Упражнение 2.15Включите в класс Vehicle метод toString.Упражнение 2.16Включите в класс LinkedList метод toString.2.13. Родные методыЕсли вам потребовалось написать на Java программу, в которой должен использоваться код, написанный на другом языке программирования,или если вам приходится напрямую работать с какой-либо аппаратурой, можно прибегнуть к помощи родных (native) методов.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5304
Авторов
на СтудИзбе
416
Средний доход
с одного платного файла
Обучение Подробнее