Java: руководство для начинающих (ЛП)
Java: руководство для начинающих (ЛП) читать книгу онлайн
"Java: руководство для начинающих"составлено Гербертом Шилдтом, автором популярных во всем мире книг по языкам программирования, таким образом, чтобы читатель смог быстро овладеть основными навыками программирования на Java. Полностью обновленное по версии Java Platform, Standard Edition 7, пятое издание этого учебного пособия начинается с рассмотрения самых основ, включая компилирование и выполнение простых программ на Java. Затем в нем описываются ключевые слова и синтаксические конструкции, составляющие основу Java как языка программирования. Далее следует изложение самых передовых языковых средств Java, включая обобщения и многопоточное программирование. И завершается книга введением в библиотеку Swing. Представленный в книге учебный и справочный материал позволяет легко и быстро научиться программировать на Java. Для облегчения процесса изучения Java книга построена следующим образом: - Основные навыки и понятия. Каждая глава начинается с перечня основных навыков и понятий, которые предстоит усвоить читателю. - Обращение к знатоку. Во врезках под этим заголовком даются полезные рекомендации в форме вопросов и ответов. - Примеры для опробования. Это примеры небольших проектов, наглядно показывающие, как применять приобретенные знания и навыки на практике. - Упражнения для самопроверки. В конце каждой главы приводятся контрольные вопросы и задания для проверки прочности усвоенного материала. - Подробные комментарии к примерам программ. Все примеры программ в этой книге снабжены подробными комментариями, описывающими демонстрируемые языковые средства и приемы программирования на Java. В этом учебном пособии для начинающих программировать на Java подробно рассмотрены все основные средства данного языка программирования: типы данных, операторы, циклы, классы, интерфейсы, методы, исключения, обобщения, пакеты, основные библиотеки классов, средства многопоточного программирования, потоки ввода-вывода, перечисления, апплеты и документирующие комментарии. Применение всех этих языковых средств Java на практике наглядно демонстрируется в небольших проектах для самостоятельного опробования. Книга снабжена массой полезных советов авторитетного автора и множеством примеров программ с подробными комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. А для проверки прочности приобретенных знаний и навыков в конце каждой главы приводятся контрольные вопросы и задания.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Может ли конструктор иметь один или несколько параметров?Да, может.
Если метод не возвращает значения, то как следует объявить тип этого метода?Как void.Глава 5. Дополнительные сведения
о типах данных и операторах
Покажите два способа объявления одномерного массива, состоящего из 12 элементов типа double.double х[] = new double[12];doublet] x = new double[12];
Покажите, как инициализировать одномерный массив целочисленными значениями от 1 до 5.int х[] = { 1, 2, 3, 4, 5 };
Напишите программу, в которой массив используется для нахождения среднегоарифметического десяти значений типа double. Используйте любые десять чисел.// Среднее арифметическое 10 значений типа double,class Avg {public static void main(String args[]) {double nums[] = { 1.1, 2.2, 3.3, 4.4, 5.5,6.6, 7.7, 8.8, 9.9, 10.1 };double sum = 0;for(int i=0; i < nums.length; i++)sum += nums[i];System.out.println("Average: " + sum / nums.length);}}
Измените программу, созданную в примере для опробования 5.1, таким образрм,чтобы она сортировала массив символьных строк. Продемонстрируйте ее работоспособность.// Демонстрация пузырьковой сортировки строк,class StrBubble {public static void main(String args[]) {String strs[] = {"this", "is", "a", "test","of", "a", "string", "sort"};int a, b;String t;int size;size = strs.length; // Количество сортируемых элементов// отобразить исходный массивSystem.out.print("Original array is:");for (int i=0; i < size; i++)System.out.print(" " + strs[i]);System.out.println();// Пузырьковая сортировка строк.for(a=l; a < size; a++)for(b=size-l; b >= a; b—) {// поменять элементы местами при нарушении порядка их следованияif(strs[b—1].compareTo(strs[b]) > 0) {t = strs[b-1];strs[b-l] = strs[b];strs[b] = t;}}// отобразить отсортированный массивSystem.out.print("Sorted array is:");for (int i=0; i < size; i++)System.out.print(" " + strs[i]);System.out.println();}}
В чем отличие методов indexOf () и lastIndexOf () из класса String?Метод indexOf () находит первое вхождение указанной подстроки, а методlastlndexOf () — ее последнее вхождение в текущей символьной строке.
Все символьные строки являются объектами типа String. Покажите, как вызываются методы length () и charAt () для строкового литерала ”1 like Java" (Мненравится Java).Как ни странно, приведенный ниже вызов метода length () вполне допустим.System.out.println("I like Java".length());В результате этого вызова на экран выводится значение 11. Аналогичным образомвызывается и метод charAt ().
Расширьте класс Encode таким образом, чтобы в качестве ключа шифрования использовалась строка из восьми символов.Приложение А. Ответы на вопросы для самопроверки 565// Видоизмененный способ шифрования и дешифрования сообщений// с помощью операции поразрядного исключающего ИЛИ.class Encode {public static void main(String args[]) {String msg = "This is a test";String encmsg = "";String decmsg = "";String key = "abcdefgi";int j;System.out.print("Original message: ");System.out.println(msg);// зашифровать сообщениеj = 0;for(int i=0; i < msg.length(); i++) {encmsg = encmsg + (char) (msg.charAt(i) A key.charAt(j));j++;if(j==8) j = 0;}System.out.print("Encoded message: ");System.out.println(encmsg);// дешифровать сообщениеj = 0;for(int i=0; i < msg.length(); i++) {decmsg = decmsg + (char) (encmsg.charAt(i) л key.charAt(j));j++;if(j==8) j = 0;}«System.out.print("Decoded message: ");System.out.println(decmsg);}}
Можно ли применять поразрядные операторы к значениям типа double?Нет, нельзя.
Перепишите приведенную ниже последовательность операторов, воспользовавшисьоператором ?.if(х < 0) у = 10;else у = 20;Ответ:у = х < 0 ? 10 : 20;
В приведенном ниже фрагменте кода содержится знак &. Какой оператор он обозначает: поразрядный или логический? Обоснуйте свой ответ.boolean а, Ь;// ...if(а & Ь) ...Это логический оператор, поскольку оба его операнда относятся к типу boolean.
Является ли ошибкой превышение верхней границы массива?Да.Является ли ошибкой использование отрицательных значений для доступа к элементам массива?Да. Значения индексов массива начинаются с нуля.
Как обозначается оператор сдвига вправо без знака?»>
Перепишите рассмотренный ранее в этой главе класс MinMax таким образом, чтобыв нем использовалась разновидность for-each цикла for.// Нахождение минимального и максимального значений в массиве,class MinMax {public static void main(String args[]) {int nums[] = new int[10];int min, max;nums[0] = 99;nums[l] = -10;nums[2] = 100123;nums[3] = 18;nums[4] = -978;nums[5] = 5623;nums[6] = 4 63;nums[7] = -9;nums[8] = 287;nums[9] = 4 9;min = max = nums[0];for(int v : nums) {if(v < min) min = v;if(v > max) max = v;}System.out.println("min and max: " + min + " " + max);}}
В примере для опробования 5.1 была реализована пузырьковая сортировка. Можноли в программе из этого примера заменить обычный цикл for его разновидностьюfor-each? Если нельзя, то почему?Циклы for, выполняющие сортировку в классе Bubble, нельзя преобразовать в вариант for-each. Что касается внешнего цикла, то текущее значение его переменной используется во внутреннем цикле. А что касается внутреннего цикла, то дляперестановки следующих не по порядку элементов требуются операции присваивания значений элементам массива, чего нельзя добиться в варианте for-each.
Можно ли управлять оператором switch с помощью объектов типа String?Можно, начиная с версии JDK 7.Глава 6. Дополнительные сведения
о методах и классах
Допустим, имеется следующий фрагмент кода:class X {private int count;Является ли допустимым приведенный ниже фрагмент кода?class Y {public static void main(String args[]) {X ob = new X();ob.count = 10;.Нет. Закрытый (private) член недоступен за пределами своего класса.
Модификатор доступа должен объявлению члена класса.предшествовать
Помимо очереди, в программах часто используется структура данных, которая называется стеком. Обращение к стеку осуществляется по принципу “первым пришел —последним обслужен“. Стек можно сравнить со стопкой тарелок, стоящих на столе.Последней берется тарелка, поставленная на стол первой. Создайте класс Stack, реализующий стек для хранения символов. Используйте методы push () и pop () дляманипулирования содержимым стека. Пользователь класса Stack должен иметь возможность задавать размер стека при его создании. Все члены класса Stack, кромеметодов push () и pop (), должны быть объявлены как private. (Подсказка: в качестве заготовки можете воспользоваться классом Queue, изменив в нем лишь способдоступа к данным.)// Класс, реализующий стек для хранения символов,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];// скопировать элементы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++) {push(a[i]);}}// поместить символы в стекvoid push(char ch) {if(tos==stck.length) {System.out.println(" — Stack is full.");return;}stck[tos] = ch;tos++;}// извлечь символы из стекаchar pop() {if(tos==0) {System.out.println(" — Stack is empty.");return (char) 0;}tos—;return stck[tos];}}// продемонстрировать применение класса Stackclass SDemo {public static void main(String args[]) {// создать пустой стек на 10 элементовStack stkl = new Stack(lO);char name[] = {'T1, 'o', 'm'};// построить стек из массиваStack stk2 = new Stack(name);char ch;int i;// поместить символы в стек stklfor(i=0; i < 10; i++)stkl.push((char) ('A' + i));// построить один стек из другого стекаStack stk3 = new Stack(stkl);// отобразить стекиSystem.out.print("Contents of stkl: ");for(i=0; i < 10; i++) {ch = stkl.pop();System.out.print(ch);}System.out.println("n");System.out.print("Contents of stk2: ");for(i=0; i < 3; i++) {ch = stk2.pop();System.out.print(ch);}System.out.println("n");System.out.print("Contents of stk3: ");for(i=0; i < 10; i++) {ch = stk3.pop();System.out.print(ch);}}}Ниже приведен результат выполнения данной программы.Contents of stkl: JIHGFEDCBAContents of stk2: moTContents of stk3: JIHGFEDCBA
