Ответы на контрольные вопросы
Глава 2
A1: | b. label |
A2: | Синтаксис определяет правила, по которым программа обрабатывается компилятором. Семантика определяет логику вычислений, выполняемую программой. |
A3: | Компьютеры представляют данные в виде набора 1 и 0. |
A4: | Тип данных – это обозначение, показывающее использование памяти в компьютере. |
A5: | Тип short задается двумя байтами, а целое представлено четырьмя байтами. |
A6: | Первые два предложения правильны, а третье – нет, так как при сложении двух чисел short получается автоматически результат типа int; требуется явное преобразование типа: short result = ( short )( s1 + s2 ); |
A7: | Численные типы данных автоматически преобразуются в более « широкий» тип во время арифметических операций. |
A8: | Можно присвоить byte или short переменной типа short. |
A9: | Явное преобразование требуется при преобразовании в более «узкий» тип. Например: int integer = 50; short s = ( short ) integer; |
A10: | Константа определяется с использованием ключевого слова final: final int i = 50; |
Глава 3
A1: | Операция деления по модулю (%) возвращает остаток от деления целых чисел: 10 % 3 = 1, или 10 / 3 = 3 с остатком 1 |
A2: | Операция && - это логическое AND и используется при сравнении с двумя значениями: if( a > 5 && a < 10 ) ... Значение – true, если значение a между 5 и 10. Операция & - это побитовое AND: 3 & 9 = 1, или 0000 0011 & 0000 1001 = 0000 0001 |
A3: | Таблица истинности – это список всех возможных входных значений и результата. Например, таблица истинности для операции AND: A B A&B 0 0 0 0 1 0 1 0 0 1 1 1 |
A4: | 21 & 3 == 0001 0101 & 0000 0011 = 0000 0001 = 1 (AND) |
A5: | 21 | 3 == 0001 0101 | 0000 0011 = 0001 0111 = 23 (OR) |
A6: | 21 ^ 3 = 0001 0101 ^ 0000 0011 = 0001 0110 = 22 (XOR) |
A7: | >>сдвиг вправо >>> сдвиг вправо с заполнением нулями. >> передвигает вправо левый бит. |
A8: | 5 * 5 + 5 эквивалентно ( 5 * 5 ) + 5 = 25 + 5 = 30 |
A9: | 5 + 5 * 5 эквивалентно 5 + ( 5 * 5 ) = 5 + 25 = 30 |
A10: | Вычисляет: int a = 5; a += 6 * ++a / 2 – 6 * 9 + 2 a += ( ( ( 6 * ++5 ) / 2 ) – (6 * 9) ) + 2 = a += ( ( ( 6 * 6 ) / 2 ) – (6 * 9) ) + 2 = a += ( ( ( 36 ) / 2 ) – (54) ) + 2 = a += ( 18 – 54 ) + 2 = a += ( –36 ) + 2 = a += -34 = a = a – 34 = a = 5 – 34 = a = -29 |
Глава 4
A1: | Обычная форма if: if( boolean_value ) { // Execute these statements } | |||||||||||||||||||||||||
A2: | Если булевское значение в if равно false, то else –блок выполняется: if( boolean_value ) { // boolean is true: Execute these statements } else { // boolean is false: Execute these statements } | |||||||||||||||||||||||||
A3: | Нет ограничений на количество блоков else if после блока if. | |||||||||||||||||||||||||
A4: | Оператор switch использует только int или переменные типов, которые преобразуются в int. | |||||||||||||||||||||||||
A5: | Оператор do-while предполагает, что тело цикла выполняется хотя бы один раз. | |||||||||||||||||||||||||
A6: | Бесконечный цикл – это цикл, который не останавливается никогда. Например: int a = 10; while( a > 0 ) { // Never change the value of a } | |||||||||||||||||||||||||
A7: | Наиболее популярный оператор цикла - цикл for. | |||||||||||||||||||||||||
A8: | Пропустить операторы внутри текущего цикла на данной итерации можно с помощью оператора continue. | |||||||||||||||||||||||||
A9: | Прекратить выполнение цикла можно с помощью оператора break. | |||||||||||||||||||||||||
A10: | Прервать вложенный цикл можно, используя оператор break с меткой: outer: for( int a=0; a<10; a++ ) { for( int b=0; b<10; b++ ) { if( a * b == 25 ) break outer; } } | |||||||||||||||||||||||||
Глава 5
|
Глава 6
A1: | Инкапсуляция – это механизм, когда данные и методы для их обработки объединяются вместе и используются для того, чтобы дать возможность другим классам использовать объект, причем другие классы могут ничего не знать о реализации методов. |
A2: | Методы get/set осуществляют доступ к защищенным полям класса причем метод set при установке значения переменной выполняет проверку корректности значения. |
A3: | Конструктор - это метод для инициализации объекта класса, он вызывается при создании объекта. |
A4: | Переменная public доступна из объектов вне класса, а переменная private доступна только внутри класса. |
A5: | Переменная this используется, чтобы различать параметры метода и поля класса внутри методов.. |
A6: | Композиция – это конструкция, когда один класс содержит объект другого класса. |
A7: | Сборка мусора – это действие, выполняемое в Java Virtual Machine (JVM) для очистки памяти, которая больше не используется в приложении Java. Она обычно выполняется, когда памяти не хватает. |
A8: | Внутренние классы – это классы, определенные внутри другого класса. Внутренние классы могут быть обычными, статическими или анонимными. |
A9: | "Передача по ссылке" означает, что, когда переменная или объект передаются внутрь метода, не создается копия передаваемого объекта или переменной, при этом возможно изменение значения передаваемого объекта или переменной. |
A10: | Ссылка на объект позволяет изменять значения полей объекта, указывая ссылку на него. |
Глава 7
A1: | Перекрытие метода в классе-наследнике означает, что Вы обеспечиваете новую реализацию существующего в родительском классе метода. |
A2: | Класс, от которого наследуют, называется родительским или суперклассом. |
A3: | Определите класс как final. |
A4: | Полиморфизм означает, что используя ссылку на базовый класс, можно вызывать методы класса-наследника. |
A5: | В классе наследнике. |
A6: | В родительском классе, общем для всех классов-наследников. |
A7: | Конструктор базового класса вызывается первым. |
A8: | Ключевое слово super позволяет ссылаться на методы и поля родительского класса прямо из класса-наследника. |
A9: | Метод super() вызывает конструктор базового класса. |
A10: | Если Вы хотите, чтобы вызывался метод finalize() для базового класса, его надо явно вызывать в методе finalize() класса наследника, причем вызов должен стоять после того, как Вы завершили уничтожение Вашего класса. |
Глава 8
A1: | Нет, все интерфейсы и их методы public и abstract по смыслу. |
A2: | Нет, все методы абстрактны. |
A3: | Вы можете реализовать интерфейс, используя ключевое слово implements в определении класса и определяя каждый метод из интерфейса в классе. |
A4: | Множественное наследование – это создание класса от двух или более родительских классов (заметим, что Java не поддерживает множественное наследование). |
A5: | Если класс наследует от двух классов, а те наследуют от одного и того же класса, то возникает вопрос: как объекты будут созданы в памяти, должны ли они иметь двойную копию полей, наследуемых от «самого базового» класса. Компилято не будет знать, к какой копии будет выполняться обращение. |
A6: | Если функциональность специфична для объектов данного типа, то лучше использовать класс. В интерфейс выносятся методы, которые обеспечивают некоторую общую для нескольких разных семейств классов функциональность. |
Глава 9
A1: | Вы выбрасываете исключение, создавая объект типа исключения и используя ключевое слово throw: MyException ex = new MyException( "This is my exception" ); throw ex; или: throw new MyException( "This is my exception" ); |
A2: | Обработка исключений выполняется включением кода, который может выбрасывать исключения в блок try, а затем «ловлей» исключений в блоках catch. Если метод accelerate() может выбрасывать исключение CarException, то обработка выглядит следующим образом: try { accelerate(); } catch( CarException ex ) { ex. printStackTrace(); } |
A3: | try отмечает начало блока try; блок try содержит методы, которые могут выбрасывать исключения, блок используется при обработке исключений. |
A4: | java. lang. Throwable |
A5: | Исключения, которые наследуют от класса java. lang. Exception. |
A6: | Исключения, которые наследуют от класса java. lang. RuntimeException. |
A7: | Метод подкласса может выбрасывать только те исключения, которые явно указаны в методе родительского класса. Единственное допущение – метод в классе-наследнике может выбрасывать исключение типа подкласса от исключения метода базового класса. |
A8: | throws используется, чтобы указать в сигнатуре метода, какие исключения метод может выбрасывать. |
A9: | Следующие действия: Создать класс, который наследует от класса java. lang. Exception. В классе, который будет выбрасывать это исключение, создать метод и указать пользовательское исключение после ключевого слова throws. В этом методе создать объект типа пользовательского исключения и выбросить его с помощью ключевого слова throw. |
A10: | Исключения – это классы, объекты которых могут пересылаться из методов одного класса в методы другого класса. Они позволяют Вам определять собственные поля и методы в классах исключений, чтобы наилучшим образом диагностировать причину ошибки. |
Глава 10
A1: | Классы-оболочки - это сохраняемые классы, они могут пересылаться между различными программами и компьютерами по сети. |
A2: | Используйте метод Integer. parseInt( String s ). |
A3: | Неизменяемость означает, что значении объекта не может изменяться. Чтобы изменить значение, надо создать новый объект данного типа. |
A4: | Строки неизменяемы в Java, потому что они хранятся в памяти во время работы программы, если есть такая строка в памяти, то она не будет повторно записываться в память. Значит, Вы не сможете просто изменить значение строки. |
A5: | Эта таблица представляет все строки программы. Это сделано для оптимизации распределения памяти, чтобы одна строка не повторялась несколько раз. |
A6: | Класс String неизменяемый, а класс StringBuffer позволяет изменять свое содержимое в памяти без создания нового объекта, как это делается в классе String.. |
A7: | Класс StringBuffer имеет метод reverse() для инверсирования строки. |
A8: | Класс StringTokenizer – это утилита, которая выделяет из строки токены, ограниченные некоторыми разделителями. |
A9: | Ограничители – это символы, служащие разделителями между токенами. |
A10: | Класс используется при разборе документов на слова, значения, разделенные, например, запятыми в файлах comma-separated value (CSV). |
Глава 11
A1: | Массив – это структура, встроенная в Java, а ArrayList - это класс. Массив имеет фиксированный размер, а класс ArrayList обеспечивает возможность изменения размера при необходимости. |
A2: | Класс Vector – поточно-безопасный; это означает, что несколько потоков могут использовать объект Vector одновременно без опасности разрушения данных. |
A3: | Хэш-таблица быстрее выполняет вставку и получение данных, чем дерево, поэтому, если ее можно использовать для Ваших данных, то лучше использовать ее.. |
A4: | Коллизия в хэш-таблицах случается, когда два объекта дают одно и то же значение хэш-кода. Она разрешается применением другого алгоритма, чтобы вычислить другой хэш-код. |
A5: | В дереве поиск выполняется очень быстро, потому что пир вставке объектов и удалении их выполняется балансировка дерева. Тогда число подузлов слева и справа от узла примерно равно. Тогда время поиска пропорционально величине ln(n), где n – число узлов в дереве. |
A6: | Set не может хранить повторяющиеся значения. |
A7: | HashMap поддерживает ключи в хэш таблице, а TreeMap – ключи в дереве. Деревья отсортированы, а хэш-таблицы – нет. Вывод из TreeMap всегда будет отсортирован, а вывод HashMap - нет. |
A8: | Стек – это структура, в которой выполняется хранение данных по принципу «последним вошел - первым вышел»: LIFO: Last In, First Out. |
A9: | Стек организован по принципу LIFO, a очередь – по принципу FIFO: «первый вошел – первым вышел». |
A10: | Итератор – это интерфейс, используемый для перехода через значения, лежащие в классах коллекциях Java. Он имеет три метода: hasNext(): проверяет, есть ли еще элементы в коллекции next(): возвращает следующий элемент в коллекции. remove(): удаляет элемент, возвращенный методом next(). |
Глава 12
A1: | java. io. InputStream и java. io. OutputStream |
A2: | java. io. Reader и java. io. Writer |
A3: | Примитивные типы |
A4: | java. io. BufferedReader |
A5: | java. io. PrintStream |
A6: | Цепочечная связь – это вставка существующего потока в другой поток, чтобы легче выполнить чтение или запись. Это очень удобно, потому что все потоки выполняют специфические операции, поэтому лучше выбирать те потоки, которые делают это с Вашими данными наилучшим образом. |
A7: | Класс java. io. StreamTokenizer выполняет разбор входного потока, в соответствии с указанными разделителями. |
Глава 13
A1: | AWT контейнеры - это тот объект, куда вставляются другие объекты AWT |
A2: | . Java имеет две графические библиотеки по некоторым причинам: AWT реализована в JDK 1.01, а затем была создана более эффективная библиотека Swing. Но с использованием AWT написано столько приложений, что удалять ее нет смысла. |
A3: | Объект List похож на объект Choice, но в List выводится более одного пункта, кроме того, он позволяет выбирать более одного пункта одновременно. |
A4: | Класс GridBagLayout – наиболее мощный из менеджеров компоновки, но он и более сложен. |
Глава 14
A1: | Представление событий в виде объектов позволяет реализовать более удобное взаимодействие между объектами, которые генерируют события, и теми объектами, которые ожидают этих событий. |
A2: | Объявление объекта как слушателя события говорит о том, что он хочет быть проинформирован, что событие произошло. Это более эффективная модель, чем используемая в JDK 1.01. |
A3: | Событие высокого уровня – это событие типа нажатия на кнопку или выбора из списка (создаваемое программно). Событие низкого уровня – это событие, связанное с аппаратурой, например, движением мыши. |
A4: | Классы-адаптеры – это специальные классы JDK, которые реализуют интерфейс (обычно методы, которые ничего не делают), чтобы Вам не надо было бы переопределять все методы интерфейса, а только нужный Вам. |
Глава 15
A1: | JavaBean обеспечивает методы get и set для задания и получения значений свойств. Если свойство только читается, то метод set опускается. Обычно JavaBean имеют визуальное представление и в панелях инструментов и на экране. |
A2: | Класс SimpleBeanInfo обеспечивает метод getIcon(), и этот метод может быть вызван инструментами GUI для получения иконки. |
A3: | Свойство связанное – это такое свойство, которое может оповещать тех, кому это надо, о своем изменении. |
A4: | Ограниченное свойство - это такое свойство, которое также может оповещать о своем изменении, но оно может обеспечить и наложение запрета на ео изменение. |
Глава 16
A1: | Это обе графические библиотеки. AWT – это более старая библиотека, которая использует графическую систему операционной системы. Swing – это новая библиотека, целиком реализованная на Java. |
A2: | Легковесность означает, что они потребляют мало ресурсов, по сравнению с компонентами AWT. |
A3: | Объекты JTextField ограничены по размеру и предназначены для ввода небольшой порции данных – обычно одного значения или строки. JTextArea включает несколько строк текста. |
A4: | Интерфейс ListSelectionListener используется, чтобы определить, какой пункт в списке был выбран. |
Глава 17
A1: | Класс TableModel управляет всеми данными, хранящимися в таблице JTable. |
A2: | Класс TreeModel управляет данными в дереве JTree. |
A3: | Массив, вектор или комбинации обеих структур используются для создания JTree. |
A4: | Класс JOptionPane может обеспечить множество разных видов. Иконки, кнопки, текстовые поля и т. д. могут изменяться в соответствии с параметром MessageType, передаваемом в конструкторе. |
Глава 18
A1: | Процессы содержат потоки (threads). Потоки – это легковзвешенные процессы, которые управляются самой JVM, а не операционной системой. |
A2: | Метод sleep() объявлен как статический static, что означает, что для его вызова не надо создавать объект типа Thread, а вызывать его по имени класса. |
A3: | Ключевое слово synchronize определяет, что блокировка будет выполняться, чтобы разрешить использование метода только одному потоку. |
A4: | Метод join() используется, чтобы подождать, когда другой поток завершится. Если используется метод с параметром, то ожидание выполняется не более указанного количества миллисекунд, и выполнение ожидающего потока будет продолжено, а при вызове метода join без параметра ожидание будет выполняться сколь угодно долго до завершения потока. |
Глава 19
A1: | База данных обеспечивает прямой доступ к данным, а не последовательный. Кроме того, база данных управляется с помощью сложных схем управления, обеспечивающих функциональность базы. |
A2: | Java Database Connection (JDBC) реализует SQL набор классов, обеспечивающих доступ к базам данных. |
A3: | Команда Insert вставляет строки в таблицу. |
A4: | Использовать SQL – запросы для создания таблиц. |
Глава 20
A1: | TCP разработан для Transmission Control Protocol. IP - стандарт для Internet Protocol. |
A2: | Пакет содержит эти классы. |
A3: | Объект сериализуется ( сохраняется), если он реализует интерфейс Serializable и может сохраняться и восстанавливаться без потери данных. |
A4: | URL - это Uniform Resource Locator. Это сетевой адрес, который позволяет найти документ или программу в сети. |
Глава 21
A1: | Сервлет может быть запущен из браузера или удаленного компьютера, но не как приложение. |
A2: | Контейнер сервлета – это программа, которая выполняется на сервере, и предназначена для управления сервлетами. Контейнер для сервлетов устанавливается на Web-сервер. |
A3: | Класс HTTPServlet может обрабатывать запросы HTTP. Если Вы используете другой протокол, Вы должны использовать класс GenericServlet. |
A4: | Сессия – сохраняет значения переменных сервлета на сервере. Это позволяет поддерживать состояние связи с пользователем достаточно длительное время. |
A5: | Сookie сохраняет состояние связи в браузере. Объект Session позволяет сохранять состояние связи на сервере. |
Глава 22
A1: | JSP - это специальное приложение Java, написанное на подмножестве языка, которое намного проще. Сервлеты написаны на 100% - м Java. |
A2: | JSP позволяют разделить логику отображения и бизнес-логику. JSP намного легче, чем Java. |
A3: | Выражения используются для вывода одного значения на экран. Скриптлеты содержат много кода, и много моще, чем выражения по возможностям. |
A4: | Предопределенные объекты – это те, которые встроены в контейнер сервлетов и доступны в страницах JSP. |
Глава 23
A1: | Директива include используется для вставки другой страницы JSP в Вашу страницу. Действие include позволяет запустить другие сервлеты,, JSP и HTML-файлы в Вашу страницу JSP. |
A2: | JavaBean – это просто классы Java. Это означает, что они имеют доступ ко всем возможностям, предоставляемым Java. JSP-файлы имеют ограниченную функциональность и используются, в основном, для представления (view) приложения. |
A3: | Атрибут class указывает имя класса, включая имя пакета. |
A4: | Аргумент param действия setProperty выполняет это преобразование автоматически. |
A5: | Скриптлеты содержат небольшие кусочки кода, которые обеспечивают логику для уровня представления. Доступ к базе данных принадлежит уровню контроллера и выполняется с помощью Bean. |
Глава 24
A1: | Теги пользователя позволяют добавлять компонентную обработку в страницы JSP. |
A2: | taglib связывает пользовательский тег и класс, предназначенный для реализации его. |
A3: | Класс должен реализовывать специальный набор методов, которые вызываются автоматически при обработке тега пользователя. |
A4: | Мы добавляем <rtexprvalue>true</rtexprvalue> в тег tablib, чтобы разрешить вычисление выражений. |
Глава 25
A1: | XML – это хороший выбор для передачи данных между различными операционными системами и языками программирования, потому что он базируется на тексте и не зависит от операционной системы и языков. Кроме того, структура языка XML – интуитивно понятная. |
A2: | SAX – это парсер, основанный на событиях, а DOM - модель разбора, основанная на представлении XML файла в виде дерева. |
A3: | SAX парсер обрабатывает документы быстрее, потому что он не выстраивает дерево в памяти, что делает DOM. |
A4: | SAX парсер последовательно просматривает файл XML и обрабатывает встречаемые теги и данные, но не сохраняет XML документ в памяти. |
A5: | Вы всегда должны использовать SAX, а не DOM, если документ по размеру очень большой и ограничен размер памяти. |
A6: | XSLT - это программное обеспечение, которое транслирует XML-документ в другую форму по командам, содержащимся в таблице стилей. |
A7: | Таблица стилей содержит инструкции для процессора XSLT о том, как переводить исходный XML документ в другую форму. |
A8: | JDOM построен на основе классов коллекций Java; тот, кто знаком с эими классами, найдет, что разбор XML документов с помощью JDOM очень прост. |
A9: | Чтение XML-документа с помощью JDOM выполняется созданием SAXParser и вызовом метода build(). |
A10: | Вы можете распечатать копию XML документа на экран, используя класс XMLOutputter и передавая в его метод output два параметра – элемент корня XML-документа и System. out. |
Глава 26
A1: | TCP/IP – это протоколы более низкого уровня, чья реальная задача – обеспечить передачу данных от одного компьютера другому. HTTP - это протокол более высокого уровня, он пересылает запросы от клиента Web серверу и ответы от Web сервера клиенту. |
A2: | Это сокращенное мнемоническое обозначение архитектуры Model-View-Controller. |
A3: | Дизайн системы по MVC предполагает разделение интерактивной системы на несколько логических подсистем. В этом случае легче разрабатывать, реализовывать и отлаживать систему. |
A4: | Session Beans могут быть использованы на уровне контроллера, а Entity Beans – для уровня Model. |



