Java: руководство для начинающих (ЛП)
Java: руководство для начинающих (ЛП) читать книгу онлайн
"Java: руководство для начинающих"составлено Гербертом Шилдтом, автором популярных во всем мире книг по языкам программирования, таким образом, чтобы читатель смог быстро овладеть основными навыками программирования на Java. Полностью обновленное по версии Java Platform, Standard Edition 7, пятое издание этого учебного пособия начинается с рассмотрения самых основ, включая компилирование и выполнение простых программ на Java. Затем в нем описываются ключевые слова и синтаксические конструкции, составляющие основу Java как языка программирования. Далее следует изложение самых передовых языковых средств Java, включая обобщения и многопоточное программирование. И завершается книга введением в библиотеку Swing. Представленный в книге учебный и справочный материал позволяет легко и быстро научиться программировать на Java. Для облегчения процесса изучения Java книга построена следующим образом: - Основные навыки и понятия. Каждая глава начинается с перечня основных навыков и понятий, которые предстоит усвоить читателю. - Обращение к знатоку. Во врезках под этим заголовком даются полезные рекомендации в форме вопросов и ответов. - Примеры для опробования. Это примеры небольших проектов, наглядно показывающие, как применять приобретенные знания и навыки на практике. - Упражнения для самопроверки. В конце каждой главы приводятся контрольные вопросы и задания для проверки прочности усвоенного материала. - Подробные комментарии к примерам программ. Все примеры программ в этой книге снабжены подробными комментариями, описывающими демонстрируемые языковые средства и приемы программирования на Java. В этом учебном пособии для начинающих программировать на Java подробно рассмотрены все основные средства данного языка программирования: типы данных, операторы, циклы, классы, интерфейсы, методы, исключения, обобщения, пакеты, основные библиотеки классов, средства многопоточного программирования, потоки ввода-вывода, перечисления, апплеты и документирующие комментарии. Применение всех этих языковых средств Java на практике наглядно демонстрируется в небольших проектах для самостоятельного опробования. Книга снабжена массой полезных советов авторитетного автора и множеством примеров программ с подробными комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. А для проверки прочности приобретенных знаний и навыков в конце каждой главы приводятся контрольные вопросы и задания.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Выполнение этого фрагмента кода дает следующий результат:i is 1After block one.i is 2After block two.After block one.i is 3After block three.After block two.After block one.After for.
Рассмотрим подробнее приведенный выше фрагмент кода, чтобы лучше понять, каким образом получается именно такой результат его выполнения. Когда значение переменной i равно 1, условие первого оператора if становится истинным и управление передается в конец блока с меткой one. В результате выводится сообщение "After block one. " (После первого блока). Если значение переменной i равно 2, то успешно завершается проверка условия во втором операторе i f и выполнение программы продолжается с конца блока с меткой two. В результате выводятся по порядку сообщения "After block two." (После второго блока) и "After block one. ". Когда же переменная i принимает значение 3, истинным становится условие в третьем операторе if и управление передается в конец блока с меткой three. В этом случае выводятся все три сообщения: два упомянутых выше, а также сообщение "After block three. " (После третьего блока), а затем еще и сообщение "After for. " (После цикла for).
Обратимся к еще одному примеру. На этот раз оператор break будет использован для выхода за пределы нескольких вложенных циклов. Когда во внутреннем цикле выполняется оператор break, управление передается в конец блока внешнего цикла. Этот блок помечен меткой done. В результате происходит выход из всех трех циклов.// Еще один пример применения оператора break с меткой,class Break5 { public static void main(String args[]) { done: for(int i=0; i<10; i++) { for(int j=0; j<10; j++) { for (int k=0; k<10; k++) { System.out.println(k + " ") ; if(к == 5) break done; // переход по метке done } System.out.println("After k loop"); // не выполнится } System.out.println("After j loop"); // не выполнится } System.out.println("After i loop"); }}
Ниже приведен результат выполнения данного фрагмента кода.012345After i loop
Расположение метки имеет большое значение, особенно когда речь идет о циклах. Рассмотрим в качестве примера следующий фрагмент кода:// Расположение метки имеет большое значение,class Вгеак6 { public static void main(String args[]) { int x=0, y=0; // Здесь метка располагается перед оператором,stopl: for(x=0; х < 5; х++) { for(у = 0; у < 5; у++) { if(у == 2) break stopl; System.out.println("х and у: " + x + " и + у); } } System.out.println(); //А здесь метка располагается непосредственно перед // открывающей фигурной скобкой. for(x=0; х < 5; х++)stop2: { for(у =0; у < 5; у++) { if(у == 2) break stop2; System.out.println("х and у: " + x + " " + у); } } }}
Ниже приведен результат выполнения данного фрагмента кода.х and у: 0 0х and у: 0 1х and у: 0 0х and у: 0 1X and У 1 0X and У 1 1X and У 2 0X and У 2 1X and У 3 0X and У 3 1X and У 4 0X and У 4 1
Ряды вложенных циклов в данном фрагменте кода идентичны за исключением того, что в первом ряду метка находится перед внешним циклом for. В таком случае при выполнении оператора break управление передается в конец всего блока цикла for, а оставшиеся итерации внешнего цикла пропускаются. Во втором ряду метка находится перед открывающей фигурной скобкой кодового блока, определяющего тело внешнего цикла. Поэтому при выполнении оператора break stop2 управление передается в конец тела внешнего цикла for, и далее выполняется очередной его шаг.
Не следует, однако, забывать, что в операторе break нельзя использовать метку, не определенную в объемлющем его цикле. Например, приведенный ниже фрагмент кода некорректен и не подлежит компиляции.// Этот фрагмент кода содержит ошибку,class BreakErr { public static void main(String args[]) { one: for(int i=0; i<3; i++) { System.out.print("Pass " + i + ” : ") ; } for(int j=0; j<100; j++) { if(j == 10) break one; // НЕВЕРНО! System, out .print (j + " 11 ); }}
Кодовый блок, обозначенный меткой one, не содержит оператор break, и поэтому управление не может быть передано этому блоку.Применение оператора continue
С помощью оператора continue можно организовать преждевременное завершение шага итерации цикла в обход обычной структуры управления циклом. Оператор continue осуществляет принудительный переход к следующему шагу цикла, пропуская любой код, оставшийся невыполненным. Таким образом, оператор continue служит своего рода дополнением оператора break. В приведенном ниже примере программы оператор continue используется в качестве вспомогательного средства для вывода четных чисел в пределах от 0 до 100.// Применение оператора continue.class ContDemo { public static void main(String args[]) { int i; // вывести четные числа в пределах от 0 до 100 for(i = 0; i<=100; i++) { if((i%2) != 0) continue; // завершить шаг итерации цикла System.out.println(i); } }}
В данном примере выводятся только четные числа, поскольку при обнаружении нечетного числа шаг итерации цикла завершается преждевременно в обход вызова метода println().
В циклах while и do-while оператор continue вызывает передачу управления непосредственно условному выражению, после чего продолжается процесс выполнения цикла. А в цикле for сначала вычисляется итерационное выражение, затем условное выражение, после чего цикл продолжается.
Как и в операторе break, в операторе continue может присутствовать метка, обозначающая тот объемлющий цикл, выполнение которого должно быть продолжено. Ниже приведен пример программы, демонстрирующий применение оператора continue с меткой.// Применить оператор continue с меткой,class ContToLabel { public static void main(String args[]) {outerloop: for(int i=l; i < 10; i++) { System.out.print("nOuter loop pass " + i + ", Inner loop: "); for(int j = 1; j < 10; j++) { if(j == 5) continue outerloop; // продолжить внешний цикл System.out.print (j); } } }}
Выполнение этой программы дает следующий результат:Outer loop pass 1, Inner loop: 1234Outer loop pass 2, Inner loop: 1234Outer loop pass 3, Inner loop: 1234Outer loop pass 4, Inner loop: 1234Outer loop pass 5, Inner loop: 1234Outer loop pass 6, Inner loop: 1234Outer loop pass 7, Inner loop: 1234Outer loop pass 8, Inner loop: 1234Outer loop pass 9, Inner loop: 1234
Как следует из приведенного выше примера, при выполнении оператора continue управление передается внешнему циклу, и оставшиеся итерации внутреннего цикла пропускаются.
В реальных программах оператор continue применяется очень редко. И объясняется это, в частности, богатым набором в Java операторов цикла, удовлетворяющих большую часть потребностей в написании прикладных программ. Но в особых случаях, когда требуется преждевременное прекращение цикла, оператор continue позволяет сделать это, не нарушая структуру кода.
Пример для опробования 3.3.Завершение построения справочной системы Java
В этом проекте предстоит завершить построение справочной системы Java, начатое в предыдущих проектах. Данная версия будет дополнена сведениями о синтаксисе операторов break и continue, а также даст пользователю возможность запрашивать сведения о синтаксисе нескольких операторов. Эта цель достигается путем добавления внешнего цикла, который выполняется до тех пор, пока пользователь не введет с клавиатуры букву q вместо номера пункта меню.
Последовательность действий
Скопируйте файл Help2.java в новый файл Help3.java.
Поместите весь исходный код программы в бесконечный цикл for. Выход из этого цикла будет осуществляться с помощью оператора break, который получит управление тогда, когда пользователь введет с клавиатуры букву q. А поскольку этот цикл включает в себя весь код, то выход из него означает завершение программы.
Измените цикл отображения меню так, как показано ниже.do { System.out.println('1. if"); System.out.println('2. switch"); System.out.println('3. for"); System.out.println('4. while"); System.out.println('5. do-while"); System.out.println('6. break"); System.out.println('7. continuen") System.out.println('Help on:"); System.out.print("Choose one (q to quit): choice = '(char) System.in.read(); do { ignore = (char) System.in.read(); } while(ignore != fn');} while( choice < '1' | choice > '7' & choice != ' q1);Как видите, цикл теперь включает в себя операторы break и continue. Кроме того,буква q воспринимается в нем как допустимый вариант выбора.
