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

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

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

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

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

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

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

Оператор switchОператор switch вычисляет целочисленное выражение и в соответствии с полученным результатом ищет метку case в блоке. Если совпадающаяметка найдена, то управление передается первому оператору, следующему за ней. Если метка не обнаружена, то следующим будет выполнятьсяоператор, находящийся за меткой default. Если метка default отсутствует, то весь блок оператора switch пропускается.Приведенный ниже пример выводит информацию о состоянии объекта.

При этом уровень детализации выбирается пользователем. Затемпроизводится вывод более скупых данных:public static final int TERSE = 0,NORMAL = 1,BLATHERING = 2;// ...public int Verbosity = TERSE;public void dumpState()throws UnexpectedStateException{switch (Verbosity) {case BLATHERING:System.out.println(stateDetails);System.out.println(stateDetails);// ПРОХОДcase NORMAL:System.out.println(basicState);// ПРОХОДcase TERSE:System.out.println(summaryState);break;default:throw new UnexpectedStateException(Verbosity);}}В классе определено несколько констант, соответствующих различным уровням детализации.

Когда наступает время вывести состояние объекта,это делается на нужном уровне детализации.Комментарий ПРОХОД означает, что программа проходит через соответствующую метку, а выполнение продолжается со следующего за нейоператора. Следовательно, если уровень детализации равен BLATHERING, то печатаются все три составные части отчета; если он равен NORMAL,то печатаются две части; наконец, если уровень детализации равен TERSE, то печатается только одна часть.Метка case или default не приводит к прерыванию работы оператора switch и не нарушает хода выполнения программы. Именно по этой причинемы вставили оператор break после завершения вывода для уровня TERSE.

Без break выполнение программы было бы продолжено операторами,следующими за меткой default, что каждый раз приводило бы к возбуждению исключения.Проход к следующему условию case может оказаться полезным при некоторых обстоятельствах, однако в большинстве случаев в концефрагмента, соответствующего метке case, должен находиться оператор break.

Хороший стиль программирования требует, чтобы намеренныйпроход к следующей метке case сопровождался каким-нибудь комментарием наподобие того, что приведен в примере.Проход чаще всего применяется для использования нескольких меток case с одним фрагментом программы. В следующем примере ониспользуется для перевода шестнадцатеричной записи цифры в значение типа int:public int hexValue(char ch) throws NonDigitException {switch (ch) {case '0': case '1': case '2': case '3': case '4':case '5': case '6': case '7': case '8': case '9':return (ch - '0');case 'a': case 'b': case 'c':case 'd': case 'e': case 'f':return (ch - 'a') + 10;case 'A': case 'B': case 'C':case 'D': case 'E': case 'F':return (ch - 'A') + 10;default:throw new NonDigitException(ch);}}Операторы break в данном случае не нужны, потому что операторы return осуществляют выход из метода и не позволяют пройти к следующемуоператору.Последнюю группу операторов внутри switch следует завершать оператором break, return или throw, как это делалось для всех предыдущихусловий.

Это уменьшает вероятность того, что при добавлении в будущем нового условия case произойдет случайный проход к нему из тогофрагмента, который когда-то завершал оператор switch.Все метки case должны быть постоянными выражениями, то есть содержать только литералы и поля static final, инициализированныеконстантами. В каждом отдельном операторе switch значения меток case должны быть различными. Допускается присутствие не более однойметки default.Упражнение 6.2Перепишите метод из упражнения 6.1 с использованием оператора switch.6.4.

Цикл while и do-whileЦикл while выглядит следующим образом:while (логическое выражение)операторВ начале работы оператора вычисляется логическое выражение, и если оно равно true, то выполняется оператор (который, разумеется, можетпредставлять собой блок); это происходит до тех пор, пока логическое выражение не станет равным false.Цикл while выполняется ноль или более раз, поскольку логическое выражение может оказаться равным false при его первом вычислении.Иногда бывает нужно, чтобы тело цикла заведомо было выполнено хотя бы один раз, и поэтому в языке Java также предусмотрена конструкцияdo-while:do-while:doоператорwhile (логическое выражение);Здесь логическое выражение вычисляется после оператора. Цикл выполняется, пока выражение остается равным true.

Оператор, являющийсятелом цикла do-while, почти всегда представляет собой блок.6.5. Оператор forОператор for используется для выполнения цикла по значениям из определенного диапазона. Он выглядит следующим образом:for (инициализация; логическое выражение; приращение)операторТакая запись эквивалентна{инициализация;while (логическое выражение) {операторприращение;}}за тем исключением, что приращение всегда выполняется, если в теле цикла встречается оператор continue (см. раздел “Оператор continue”).Обычное применение цикла for — поочередное присвоение переменной значений из некоторого диапазона, пока не будет достигнут конецэтого диапазона.Выражения инициализации и приращения в цикле for могут представлять собой список значений, разделяемых запятой. Вычисление этихвыражений, как и в других операторах, происходит слева направо.

Например, чтобы с помощью двух индексов перебрать все элементы массивав противоположных направлениях, можно воспользоваться следующим выражением:for ( i = 0, j = arr.length - 1; j >>= 0; i++, j--) {// ...}Пользователь сам выбирает диапазон значений переменной цикла. Например, цикл for часто применяется для перебора элементов связногосписка или значений, входящих в математическую последовательность. Благодаря этому конструкция for в Java оказывается существенно болеемощной, чем в других языках программирования, в которых возможности циклов for ограничиваются приращением переменной в заранеезаданном диапазоне.Приведем пример цикла, который вычисляет наименьший показатель (exp), такой, что 10 в степени exp превосходит заданную величину:public static int tenPower(int value) {int exp, v;for (exp = 0, v = value - 1; v >> 0; exp++, v /= 10)continue;return exp;}В данном случае в цикле одновременно изменяются две переменные: показатель степени (exp) и значение 10exp (v).

Эти переменные являютсявзаимосвязанными. В подобных случаях разделенный запятыми список является корректным способом обеспечения синхронизации значений.Тело цикла представляет собой простой оператор continue, начинающий следующую итерацию цикла. В теле цикла вам ничего не приходитсяделать — все происходит в проверяемом условии и в выражении-итерации. Использованный в данном примере оператор continue — одна извозможностей создать пустое тело цикла; вместо него можно было оставить отдельную строку, состоящую из одной точкой с запятой, илисоздать пустой блок в фигурных скобках. Просто ограничиться точкой с запятой в конце строки с оператором for было бы довольно опасно —если точка с запятой будет случайно удалена, то оператор, следующий за for, превратится в тело цикла.Все выражения в заголовке цикла for являются необязательными. Если пропустить инициализацию или приращение, то соответствующая частьцикла просто не выполняется.

Отсутствующее логическое выражение считается всегда равным true. Следовательно, для создания бесконечногоцикла можно воспользоваться следующей записью:for (;;)операторПодразумевается, что цикл будет прерван иными средствами — скажем, описанным ниже оператором break или возбуждением исключения.По общепринятому соглашению цикл for используется для диапазонов взаимосвязанных значений. Нарушение этого соглашения, когдавыражения инициализации или приращения не имеют никакого отношения к проверке логического условия, считается проявлением плохогостиля программирования.Упражнение 6.3Напишите метод, который получает два параметра типа char и выводит все символы, лежащие в диапазоне между ними (включая их самих).6.6.

МеткиОператорам могут присваиваться метки. Чаще всего метки применяются в блоках и циклах. Метка предшествует оператору следующим образом:метка: операторИменованные блоки часто используются с операторами break и continue.6.7. Оператор breakОператор break применяется для выхода из любого блока, не только из оператора switch. Чаще всего оператор break служит для прерыванияцикла, но он может использоваться для немедленного выхода из любого блока.

В приведенном ниже примере этот оператор помогает найтипервый пустой элемент в массиве ссылок на объекты Contained:class Container {private Contained[] Objs;// ...public void addIn(Contained obj)throws NoEmptySlotException{int i;for (i = 0; i << Objs.length; i++)if (Objs[i] == null)break;if (i >>= Objs.length)throw new NoEmptySlotException();Objs[i] = obj;// занести в найденный элементobj.inside(this); // сообщить о занесении}}Оператор break без метки применяется для выхода из внутренних операторов switch, for, while или do. Чтобы выйти из внешнего оператора,снабдите его меткой и укажите ее в операторе break:private float[][] Matix;public boolean workOnFlag(float flag) {int y, x;boolean found = false;}search:for (y = 0; y << Matrix.length; y++) {for (x = 0; x << Matrix[y].length; x++) {if (Matrix[y][x] == flag) {found = true;break search;}}}if (!found)return false;// сделать что-нибудь с найденным элементом матрицыreturn true;Использование меток оставляется на усмотрение программиста.

Впрочем, оно может оказаться хорошей защитной мерой против модификацииваших программ — например, включения их фрагментов в оператор switch или цикл.Обратите внимание: break с меткой — это не то же самое, что goto. Оператор goto приводит к хаотичным прыжкам по программе и усложняетпонимание ее смысла. Напротив, оператор break или continue, в котором используется метка, осуществляет выход лишь из конкретногопомеченного блока, а порядок выполнения программы остается вполне понятным.6.8.

Оператор continueОператор continue осуществляет переход в конец тела цикла и вычисляет значение управляющего логического выражения. Этот оператор частоиспользуется для пропуска некоторых значений в диапазоне цикла, которые должны игнорироваться или обрабатываться в отдельномфрагменте.

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