Вход/Регистрация
Java: руководство для начинающих
вернуться

Шилдт Герберт

Шрифт:

Можно ли применять поразрядные операторы к значениям типа 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]; } } // продемонстрировать применение класса Stack class 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; // поместить символы в стек stkl for(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: JIHGFEDCBA Contents of stk2: moT Contents of stk3: JIHGFEDCBA

Допустим, имеется следующий класс: class Test { int a; Test(int i) { a = i; } } Напишите метод swap , реализующий обмен содержимым между двумя объектами типа Test, на которые ссылаются две переменные данного типа. void swap(Test obi, Test ob2) { int t; t = obi.a; obi.a = ob2.a; ob2.a = t; }

Правильно ли написан следующий фрагмент кода? class X { int meth(int a, int b) { ... } String meth(int a, int b) { ... } Нет, неправильно. Перегружаемые методы могут возвращать значения разного типа, но это не играет никакой роли для определения подобных методов во время их перегрузки. Перегружаемые методы должны иметь в своих списках разнотипные параметры.

Напишите рекурсивный метод, отображающий строку задом наперед. // Отображение строки задом наперед с помощью рекурсии, class Backwards { String str; Backwards(String s) { str = s; } void backward(int idx) { if(idx != str.length-1) backward(idx+1); System.out.print(str.charAt(idx) ) ; } } class BWDemo { public static void main(String args[]) { Backwards s = new Backwards("This is a test"); s.backward(0); } }

Допустим, что все объекты класса должны совместно пользоваться одной и той же переменной. Как объявить такую переменную? Переменная, предназначенная для совместного использования, должна быть объявлена как static.

Для чего может понадобиться статический блок? Статический блок служит для выполнения любых инициализирующих действий в классе до создания конкретных объектов.

Что такое внутренний класс? Внутренний класс — это нестатический вложенный класс.

Допустим, требуется член класса, к которому могут обращаться только другие члены этого же класса. Какой модификатор доступа следует использовать в его объявлении? Модификатор доступа private.

Имя метода и список его параметров вместе составляют метода. сигнатуру

  • Читать дальше
  • 1
  • ...
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: