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

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

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

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

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

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

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

Например, рассмотрим следующийфрагмент:try {// ... сделать что-нибудь ...return 1;} finally {return 2;}Когда выполняется return внутри блока try, то на входе блока finally код возврата равен 1. Однако внутри самого блока finally возвращаетсязначение 2, так что исходный код возврата забывается. В сущности, если бы в блоке try было возбуждено исключение, то код возврата также былбы равен 2. Если бы блок finally не возвращал никакого значения, а просто завершался нормальным образом, то код возврата был бы равен 1.7.5. Когда применяются исключенияВ начале этой главы мы воспользовались выражением “неожиданное ошибочное состояние”, чтобы описать момент возбуждения исключения.Исключения не предназначаются для простых, предсказуемых ситуаций.

Например, достижение конца входного потока является заранеепредсказуемым, так что проверка на “исчерпание” потока является частью ожидаемого поведения метода. Код возврата, сигнализирующий оконце ввода, и проверка его при вызове также выглядят вполне разумно — к тому же такую конструкцию оказывается проще понять. Сравнимтипичный цикл, в котором используется флаг возвратаwhile ((token = stream.next()) != Stream.END)process(token);stream.close();с другим циклом, в котором о достижении конца ввода сигнализирует исключение:try {for (;;) {process(stream.next());}} catch (StreamEndException e) {stream.close();}В первом случае логика выполнения программы оказывается прямолинейной и понятной.

Цикл выполняется до тех пор, пока не будет достигнутконец входного потока, после чего поток закрывается. Во втором случае цикл выглядит так, словно он выполняется бесконечно. Если не знать отом, что о конце ввода сигнализирует StreamEndException, то становится непонятно, когда же происходит выход из цикла.

Впрочем, даже если выдогадываетесь о существовании StreamEndException, то факт завершения цикла оказывается вынесенным из его тела (for) во внешний блок try,что затрудняет понимание происходящего.Встречаются ситуации, в которых невозможно найти приемлемый код возврата. Например, в классе, представляющем поток значений типаdouble, может содержаться любое допустимое double, поэтому числовой маркер конца потока невозможен.

Более разумный подходпредусматривает специальный метод eof для проверки конца потока, который должен выполняться перед каждой операцией чтения:while (!stream.eof())process(stream.nextDouble());stream.close();С другой стороны, попытка чтения после достижения конца файла оказывается непредсказуемой. Она свидетельствует о том, что программа незаметила конца входного потока и теперь пытается сделать что-то такое, чего делать ни в коем случае не следует. Перед нами — отличнаявозможность применить исключение ReadPastEndException. Подобные действия выходят за границы ожидаемого поведение класса-потока, такчто возбуждение исключения в данном случае оказывается вполне уместным.Решить, какая ситуация является предсказуемой, а какая — нет, порой бывает нелегко.

Главное — не злоупотреблять исключениями длясообщений о предсказуемых ситуациях.Упражнение 7.2Как, по вашему мнению, программа должна сообщать программисту о следующих ситуациях:●●●●●●●Программа пытается присвоить отрицательное значение вместимости машины в объекте PassengerVehicle.В файле конфигурации, используемом для задания начального состояния объекта, обнаружена синтаксическая ошибка.Метод, который ищет в строковом массиве указанное программистом слово, не может найти ни одного экземпляра такого слова.Файл, передаваемый методу open, не существует.Файл, передаваемый методу open, существует, но система безопасности не разрешает пользователю работать с ним.При попытке установить сетевое соединение с удаленным процессом-сервером не удается связаться с удаленным компьютером.Во время взаимодействия с удаленным процессом-сервером прерывается сетевое соединение.Содержание | ДалееГлава 6ПОРЯДОК ВЫПОЛНЕНИЯ— Скажите, пожалуйста, куда мне отсюда идти?— Это во многом зависит от того, куда ты хочешь прийти.Льюис Кэрролл, “Алиса в Стране Чудес”,перевод Б.

ЗаходераПрограмма, состоящая из последовательно выполняемых операторов, несомненно способна принести пользу, так как операторы выполняются втом порядке, в котором они встречаются в программе. Однако возможность управлять порядком следования операторов (то есть проверятьнекоторое условие и в зависимости от результатов проверки выполнять разные действия) знаменует собой качественно новый уровень всредствах разработки.

В этой главе рассмотрены практически все управляющие операторы, которые определяют порядок выполненияпрограммы. Исключения рассмотрены отдельно в главе 7.6.1. Операторы и блокиСуществует две основные категории операторов: операторы-выражения и операторы-объявления; и те и другие уже встречались нам в этойкниге. Операторы-выражения (такие, как i++ или вызовы методов) в соответствии с названием представляют собой выражения, в конце которыхстоит завершающая точка с запятой.

/Необходимо помнить об отличии терминатора (завершающего символа) от разделителя. Запятые приперечислении идентификаторов в объявлении являются разделителями, потому что они разделяет элементы в списке. Точка с запятой являетсятерминатором, так как она завершает каждый оператор. Если бы точка с запятой была разделителем операторов, то последняя точка с запятойвнутри блока была бы излишней, и, возможно, даже недопустимой./ Не каждое выражение может стать оператором, поскольку, например,превращение проверки <= в автономный оператор почти всегда оказывается бессмысленным. Следующие типы выражений могут превращатьсяв операторы за счет добавления завершающей точки с запятой:●●●●выражения присваивания, содержащие = или один из операторов op=;префиксные или постфиксные формы ++ и —;вызовы методов (независимо от того, возвращают ли они какие-либо значения);выражения, в которых используется оператор new для создания объектов.Операторы-объявления (которые формально следовало бы называть операторами-объявлениями локальных переменных) объявляютпеременные и, возможно, инициализируют их.

Они могут находиться в любом месте блока — не обязательно в начале. Локальные переменныесуществуют лишь во время выполнения блока, в котором они объявлены. Перед тем как их использовать, необходимо указать их начальныезначения — либо посредством инициализации при объявлении, либо оператором присваивания. При попытке использования локальнойпеременной, не получившей начального значения, выдается ошибка во время компиляции.Кроме перечисленных выше операторов-выражений, существуют и другие операторы, влияющие на ход выполнения программы, — например, ifи for. В этой главе мы подробно рассмотрим каждый из таких операторов.Фигурные скобки { и } применяются для группировки нуля или более операторов в блок.

Последний может использоваться везде, где допускаетсяотдельный оператор, поскольку блок является оператором (хотя и составным).6.2. Оператор if-elseОдним из основных средств управления выполнением программы является оператор if, который позволяет решить, нужно ли производить теили иные действия. Его синтаксис выглядит следующим образом:if (логическое выражение)оператор1elseоператор2Сначала определяется значение логического выражения. Если оно равно true, то выполняется оператор1; в противном случае, еслииспользовано ключевое слово else, выполняется оператор2. Присутствие else не является обязательным.Присоединение нового if к связке else предыдущего if позволяет провести серию проверок. Приведем метод, который на основаниисодержимого строки, равной одному из некоторых известных слов, выбирает и производит некоторое действие над вторым аргументом:public void setProperty(String keyword, double value)throws UnknownProperty{if (keyword.equals("charm"))charm(value);else if (keyword.equals("strange"))strange(value);elsethrow new UnknownProperty(keyword);}Что произойдет, если в программе встречается несколько if без соответствующих им else? Например:public double sumPositive(double[] values) {double sum 0.0;if (values.length >> 1)for (int i = 0; i << values.length; i++)if (values[i] >> 0)sum += values[i];else// не тут-то было!sum = values[0];return sum;}Вам может показаться, что условие else связано с проверкой размера массива, но это не более чем иллюзия, вызванная расстановкойотступов, — Java не обращает на них никакого внимания.

Условие else связывается с последним оператором if, у которого это условиеотсутствует; следовательно, приведенный выше фрагмент будет эквивалентным следующему:public double sumPositive(double[] values) {double sum 0.0;if (values.length >> 1)for (int i = 0; i << values.length; i++)if (values[i] >> 0)sum += values[i];else// не тут-то было!sum = values[0];return sum;}Вероятно, это не совсем то, на что вы рассчитывали.

Чтобы связать условие else с первым if, можно создать блоки с помощью фигурных скобок:public double sumPositive(double[] values) {double sum 0.0;if (values.length >> 1) {for (int i = 0; i << values.length; i++)if (values[i] >> 0)sum += values[i];} else {sum = values[0];}return sum;}Упражнение 6.1Используя if-else, напишите метод, который получает строку, заменяет в ней все спецсимволы на соответствующие символы Java и возвращает ее.Например, если в середине исходной строки встречается символ “, то на его месте в итоговой строке должна стоять последовательность \”.6.3.

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