Java: руководство для начинающих (ЛП)
Java: руководство для начинающих (ЛП) читать книгу онлайн
"Java: руководство для начинающих"составлено Гербертом Шилдтом, автором популярных во всем мире книг по языкам программирования, таким образом, чтобы читатель смог быстро овладеть основными навыками программирования на Java. Полностью обновленное по версии Java Platform, Standard Edition 7, пятое издание этого учебного пособия начинается с рассмотрения самых основ, включая компилирование и выполнение простых программ на Java. Затем в нем описываются ключевые слова и синтаксические конструкции, составляющие основу Java как языка программирования. Далее следует изложение самых передовых языковых средств Java, включая обобщения и многопоточное программирование. И завершается книга введением в библиотеку Swing. Представленный в книге учебный и справочный материал позволяет легко и быстро научиться программировать на Java. Для облегчения процесса изучения Java книга построена следующим образом: - Основные навыки и понятия. Каждая глава начинается с перечня основных навыков и понятий, которые предстоит усвоить читателю. - Обращение к знатоку. Во врезках под этим заголовком даются полезные рекомендации в форме вопросов и ответов. - Примеры для опробования. Это примеры небольших проектов, наглядно показывающие, как применять приобретенные знания и навыки на практике. - Упражнения для самопроверки. В конце каждой главы приводятся контрольные вопросы и задания для проверки прочности усвоенного материала. - Подробные комментарии к примерам программ. Все примеры программ в этой книге снабжены подробными комментариями, описывающими демонстрируемые языковые средства и приемы программирования на Java. В этом учебном пособии для начинающих программировать на Java подробно рассмотрены все основные средства данного языка программирования: типы данных, операторы, циклы, классы, интерфейсы, методы, исключения, обобщения, пакеты, основные библиотеки классов, средства многопоточного программирования, потоки ввода-вывода, перечисления, апплеты и документирующие комментарии. Применение всех этих языковых средств Java на практике наглядно демонстрируется в небольших проектах для самостоятельного опробования. Книга снабжена массой полезных советов авторитетного автора и множеством примеров программ с подробными комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. А для проверки прочности приобретенных знаний и навыков в конце каждой главы приводятся контрольные вопросы и задания.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
“Один интерфейс — множество методов” — главный принцип Java. Какое языковоесредство лучше всего демонстрирует этот принцип?Этот принцип объектно-ориентированного программирования лучше всего демонстрирует интерфейс.
Сколько классов могут реализовать один и тот же интерфейс? Сколько интерфейсовможет реализовать класс?Один интерфейс может быть реализован любым количеством классов. Класс можетреализовать произвольное число интерфейсов.
Может ли один интерфейс наследовать другой интерфейс?Да, может. Механизм наследования распространяется и на интерфейсы.
Создайте интерфейс для класса Vehicle, рассмотренного в главе 7, назвав егоIVehicle.interface IVehicle {// возвратить дальность действия транспортного средстваint range();// рассчитать объем топлива, требующегося// для прохождения заданного путиdouble fuelneeded(int miles);// Методы доступа к переменным экземпляра.int getPassengers();void setPassengers(int p);int getFuelcap();void setFuelcap(int f);int getMpg();void setMpg(int m);}
Переменные, объявленные в интерфейсе, неявно считаются как static и final.Какие преимущества это дает?Переменные, объявленные в интерфейсе, могут служить в качестве именованныхконстант, общих для всех файлов программы. Доступ к ним обеспечивается путемимпорта того интерфейса, в котором они объявлены.
Пакет, по существу, является контейнером для классов. Верно или не верно?Приложение А. Ответы на вопросы для самопроверки 575Верно.
Какой стандартный пакет импортируется по умолчанию в любую программу на Java?Пакет java.lang.Глава 9. Обработка исключений
Какой класс находится на вершине иерархии исключений?На вершине иерархии исключений находится класс Throwable.
Объясните вкратце, как пользоваться ключевыми словами try и catch?Ключевые слова try и catch используются совместно. Операторы программы дляотслеживания исключений помещаются в блок try. А перехват и обработка исключений осуществляются в блоке catch.
Какая ошибка допущена в приведенном ниже фрагменте кода?II ...vals[18] = 10;catch (ArraylndexOutOfBoundsException exc) {// обработать ошибку}Блоку catch не предшествует блок try.
Что произойдет, если исключение не будет перехвачено?Если исключение не будет перехвачено, произойдет аварийное завершение программы.
Какая ошибка допущена в приведенном ниже фрагменте кода?class A extends Exception { ...class В extends А { ...II ...try {II ...}catch (A exc) { ... }catch (B exc) { ... }В данном фрагменте кода оператор catch для суперкласса предшествует операторуcatch для подкласса. А поскольку оператор catch для суперкласса может обработать также исключения, относящиеся к подклассу, то в программе окажется код, недоступный для выполнения.
Может ли внутренний блок catch повторно генерировать исключение, которое будет обработано во внешнем блоке catch?Да, исключения могут генерироваться повторно.
Блок finally — последний фрагмент кода, выполняемый перед завершением программы. Верно или неверно? Обоснуйте свой ответ.Неверно. Блок finally выполняется по завершении блока try.
Исключения какого типа необходимо явно объявлять с помощью оператора throws,включаемого в объявление метода?С помощью оператора throws объявляются все исключения, кроме RuntimeException и Error.
Какая ошибка допущена в приведенном ниже фрагменте кода?class MyClass { // ... }// ...throw new MyClass();Класс MyClass не является производным от класса Throwable. С помощью оператора throw могут генерироваться лишь те исключения, которые являются подклассами, производными от класса Throwable.
Отвечая на вопрос 3 упражнения для самопроверки по материалу главы 6, вы создали класс Stack. Добавьте в него специальные исключения для реагирования на попытку поместить элемент в переполненный стек и извлечь элемент из пустого стека.// Исключение, возникающее при переполнении стека,class StackFullException extends Exception {int size;StackFullException (int s) { size = s; }public String toString() {return "nStack is full. Maximum size is " +size;}}// Исключение, возникающее при обращении к пустому стеку,class StackEmptyException extends Exception {public String toString () {return "nStack is empty.";}}// Класс, реализующий стек для хранения символов,class Stack {private char stck[]; // Массив для хранения элементов стекаprivate int tos; // Вершина стека// построить пустой стек заданного размераStack(int size) {stck = new char[size]; // выделить память для стекаtos = 0;}// построить один стек из другого стекаStack(Stack ob) {tos = ob.tos;stck = new char[ob.stck.length];Приложение А. Ответы на вопросы для самопроверки 577// скопировать элементыfor(int i=0; i < tos; i++)stck[i] = ob.stck[i];}// построить стек с исходными значениямиStack(char а [ ]) {stck = new char[a.length];for(int i = 0; i < a.length; i++) {try {push (a [i]);}catch(StackFullException exc) {System.out.println(exc);}}}// поместить символы в стекvoid push(char ch) throws StackFullException {if(tos==stck.length)throw new StackFullException(stck.length);stck[tos] = ch;tos++;}// извлечь символы из стекаchar pop() throws StackEmptyException {if(tos==0)throw new StackEmptyException();tos — ;return stck[tos];}}
Какими тремя способами можно сгенерировать исключение?Исключение может быть сгенерировано в результате ошибки в виртуальной машинеJava, ошибки в программе или явным образом с помощью оператора throw.
Назовите два подкласса, производных непосредственно от класса Throwable.Классы Error и Exception
Что такое многократный перехват?Многократным называется такой перехват, который позволяет перехватывать дваи больше исключений одним оператором catch.
Следует ли перехватывать в программе исключения типа Error?Нет, не следует.Глава 10. Ввод-вывод данных
Для чего в Java определены как байтовые, так и символьные потоки?Байтовые потоки с самого начала были определены в Java. Они особенно удобныдля ввода-вывода двоичных данных и поддерживают произвольный доступ к ним вфайлах. А символьные потоки оптимизированы для представления в уникоде.
Как известно, ввод-вывод данных на консоль осуществляется в текстовом виде.Почему же в Java для этой цели используются байтовые потоки?Стандартные потоки ввода-вывода System, in, System.out и System.err былиопределены в Java прежде символьных потоков.
Как открыть файл для чтения байтов?Ниже приведен один из способов открытия файла для ввода данных типа byte.FilelnputStream fin = new FilelnputStream("test");
Как открыть файл для чтения символов?Ниже приведен один из способов открытия файла для ввода символов.FileReader fr = new FileReader("test");
Как открыть файл для ввода-вывода с произвольным доступом?Ниже приведен один из способов открытия файла для ввода-вывода с произвольным доступом.randfile = new RandomAccessFile("test", "rw");
Как преобразовать числовую строку "123.23" в двоичный эквивалент?Для того чтобы преобразовать числовую строку в двоичный эквивалент, следует воспользоваться одним из методов синтаксического анализа, определенных в классахоболочек типов, например Integer или Double.
Напишите программу, которая будет копировать текстовые файлы. Видоизмените еетаким образом, чтобы все пробелы заменялись дефисами. Используйте при написании программы классы, представляющие байтовые потоки, а также традиционныйспособ закрытия файла явным вызовом метода close ()./ Копирование текстового файла с заменой пробелов дефисами.В этой версии программы используются байтовые потоки.Для того чтобы воспользоваться этой программой, укажитев командной строке имена исходного и целевого файлов. Например:java Hyphen source target/import java.io.*;class Hyphen {public static void main(String args[]){int i;FilelnputStream fin = null;FileOutputStream fout = null;Приложение А. Ответы на вопросы для самопроверки 579// проверить сначала, указаны ли оба файлаif(args.length !=2 ) {System.out.println("Usage: Hyphen From To");return;}// скопировать файл и заменить в нем пробелы дефисамиtry {fin = new FilelnputStream(args[0]);fout = new FileOutputStream(args[1]);do {i = fin.read();// преобразовать пробел в дефисif((char)i == ' ') i =if(i != -1) fout.write(i);} while(i != -1);} catch(IOException exc) {System.out.println("I/O Error: " + exc);} finally {try {if (fin != null) fin.closeO;} catch(IOException exc) {System.out.println("Error closing input file.");}try {if(fin != null) fout.close();} catch(IOException exc) {System.out.println("Error closing output file.");}}}}
