Java: руководство для начинающих
Шрифт:
Каким должно быть имя конструктора? Приложение А. Ответы на вопросы для самопроверки 563 Имя конструктора должно совпадать с именем класса.
Какие действия выполняет оператор new? Оператор new выделяет память для объекта и выполняет инициализацию объекта, используя конструктор соответствующего класса.
Что такое “сборка мусора” и какие действия она выполняет? Зачем нужен метод finalize? “Сборка мусора” — это механизм удаления неиспользуемых объектов для повторного использования памяти, освобождаемой от объектов. Метод finalize вызывается для объекта непосредственно перед его удалением из памяти.
Что
Может ли конструктор иметь один или несколько параметров? Да, может.
Если метод не возвращает значения, то как следует объявить тип этого метода? Как 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 // Видоизмененный способ
Можно ли применять поразрядные операторы к значениям типа 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) член недоступен за пределами своего класса.
Модификатор доступа должен объявлению члена класса. предшествовать