Задания к лабораторной работе №3



1. Создание приложения (к примеру «Записная книжка» или «Графический редактор») с использованием шаблона Abstract Factory/Абстрактная фабрика

2. Создания приложения с использованием библиотеки Jung, реализующего алгоритм генерации случайных графов( граф де-Бруйна)

3. Создание приложения (к примеру «Записная книжка» или «Графический редактор») с использованием шаблона Factory Method/Фабричный метод, Virtual Constructor

4. Создания приложения с использованием библиотеки Jung, реализующего алгоритм ПРИМА для построения минимального остового дерева

5. Создание приложения (к примеру «Записная книжка» или «Графический редактор») с использованием шаблона Builder/Строитель

6. Создания приложения с использованием библиотеки Jung, реализующего алгоритм генерации случайных графов (k-соседний граф)

7. Создание приложения (к примеру «Записная книжка» или «Графический редактор») с использованием шаблона Model-View-Controller(MVC)

8. Создания приложения с использованием библиотеки Jung, реализующего алгоритм генерации случайных графов (эвклидов граф)

9. Создание приложения (к примеру «Записная книжка» или «Графический редактор») с использованием шаблона Singleton/Одиночка

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

11. Создание приложения (к примеру «Записная книжка» или «Графический редактор») с использованием шаблона Composite/Компоновщик

12. Создания приложения с использованием библиотеки Jung, реализующего алгоритм построении минимального остового дерева (алгоритм Краскала)

13. Создание приложения (к примеру «Записная книжка» или «Графический редактор») с использованием шаблона Chain of Responsibility/Цепочка обязанностей

14. Создания приложения с использованием библиотеки Jung, реализующего алгоритм, вычисляющий среднее значение длины кратчайших путей из заданной вершины

15. Создание приложения (к примеру «Записная книжка» или «Графический редактор») с использованием шаблона Command/ Команда, Action, Transaction

16. Создания приложения с использованием библиотеки Jung, реализующего поиск Эйлерова пути в графе

17. Создание приложения (к примеру «Записная книжка» или «Графический редактор») с использованием шаблона State/Состояние, Objects for States

18. Создания приложения с использованием библиотеки Jung, реализующего алгоритм раскраски графа.

19. Создание приложения (к примеру «Записная книжка» или «Графический редактор») с использованием шаблона Strategy/Стратегия SimplePolicy

 

 

Вопросы по синтаксису языка и объектно-ориентированному программированию

Ниже перечисленные вопросы по сложности расположены в произвольном порядке (их упорядоченность по темам). Это связано с тем, что подразумевается, что студент к началу работы над разбором познакомился с языком и ему остаётся только углубить понимание специфики и конструкций языка, кроме того студент к моменту изучения языка JAVA изучал как процедурные языки (PASCAL, С), так и знакомился с объектно-ориентированными (С#). А значит нужно ориентироваться на отличия JAVA от других языков и на темы, а не сложность изложения. При этом рекомендуется в сложных вопросах при их разборе обращаться к дополнительной литературе, предоставленной в электронном виде для чтения, в частности разбор спецификации Гослинга (одного из создателей языка), книги по Java от компании SUN, «Философия JAVA» Брюса Эккеля. Также рекомендуются следующие электронные ресурсы и пособия:

1. http://javaalmanac.com/ Примеры кода из Java Developers Almanac

2. Шилдт, Г. Java 2 v.5.0. [Электрон. ресурс] http://bsu.iba.by/books/Java2v5.zip

Гослинг, Дж., Арнольд, К. Язык программирования Java [Электрон. ресурс] http://bsu.iba.by/books/goslingJava.zip

 

Синтаксис и семантика языка

Вопрос 1:Каков будет результат выполнения программы

1. public class Test {

2. public Test() {

3. }

4.

5. public static void main(String[] args) {

6. Test test = new Test();

7. int i = 5;

8. while(i = 5){

9. System.out.println(i++);

10. }

11. }

12.

}

• 1 Компилятор выдаст сообщение об ошибке в строке 8

• 2 На консоль будут последовательно выведены значения 01234

• 3 На консоль будут последовательно выведены значения 43210

• 4 Программа откомпилируется,но на консоль ничего выведено не будет

Ответ: Правильный ответ 1. В операторе while может быть использовано только булево значение. В данном случае используется оператор присваивания,а не сравнения, т.о. компилятор выдаст ошибку. Так как здесь предложено выбрать только один ответ остальные ответы неверные

Вопрос 2:Приведенная ниже программа должна вывести на консоль Hello World! Выберите строки, которые нужно модифицировать в вашей программе, что бы получить правильный результат.

1. public class Test {

2. public Test() {

3. }

4. public static void main(String[] args) {

5. Test test = new Test();

6. String [] arr = {"H","e","l","l","o","

","w","o","r","l","d","!"};

7. String result = "";

8. int i= 0;

9. for(;;;){

10. result += arr[i++];

11. }

12. System.out.println(result);

13. }

14. }

• 1 Заменить строку 9 на for(i = 0; i < arr.length;){

• 2 Заменить строку 9 на for(int int i = 0; i < arr.length;){

• 3 Заменить строку 9 на for(i = 0; i < arr.length;i++){

• 4 Заменить строку 9 на for(i = 1; i <= arr.length;i++){

Ответ: Правильный ответ 1

Ответ 2 не верен так как переменная i уже определена в методе main. Здесь следует еще раз напомнить, что область видимости переменной (если она объявлена в цикле for) будет ограничиваться лишь телом цикла. Однако в данном случае перемена с таким именем уже объявлена в теле метода и соответственно находится в той же области видимости. Если переменная была бы объявлена, как переменная класса, то этот код откомпилировался бы вполне успешно. Ответ 3 не является верным так как, увеличение значения i в теле цикла будет произведено дважды, т.о. на печать будут выведены лишь четные элементы массива. Ответ 4 не является верным по двум причинам. Первая – элементы массива нумеруются с 0, соответственно первым будет выбран второй элемент массива, вторая – когда выполнится условие окончания цикла, будет нарушена граница массива и будет вызвано исключение IndexOfBoundException

 

Вопрос 3:Какая строка будет выдана на консоль после выполнения фрагмента кода

приведенного ниже.

1. public class Test {

2. public Test() {

3. }

4. public static void main(String[] args) {

5. int i,j;

6. lab: for(i = 0; i < 6; i++){

7. for (j = 3; j > 1; j--){

8. if(i == j){

9. System.out.println(" " + j);

10. break lab;

11. }

12. }

13. }

14. }

15. }

1. 2345

2. 234

3. 3

4. 2

Ответ:Правильный ответ 2

Условие if в данном примере будет выполнено, когда переменные i и j будут равны 2. После чего на консоль будет выведено 2 и выполнится оператор break. Т.к. break содержит ссылку на метку, то будет прерван не текущий цикл (внутренний, по переменной j), а цикл по переменной i (внешний), т.о. образом выполнение программы будет прекращено.

 

Вопрос 4:Дан код:

String str=new String("Java");

int i=1;

char j=3;

System.out.println(str.substring(i,j));

В результате при компиляции и запускке будет выведено:

 1. Выведено: Ja 

 2. Выведено: av 

 3. Выведено: ava 

 4. Ошибка: не существует метода substring(int,char) 

Ответ:2

 Правильный ответ 2. См. Гослинга в предоставленной литературе 5.6 Числовое расширение. Если кратко, Числовые расширения используются для того, чтобы приводить операнды числовой операции к общему типу так, чтобы действие могло выполняться. В некоторых операциях, которые дают значения числового типа, одноместное числовое расширение применяется к отдельному операнду:

· Если операнд имеет тип byte, short или char, одноместное числовое расширение расширяет его до значения типа int расширяющим преобразованием (§5.1.2).

· Иначе, одноместный числовой операнд остается как есть и не преобразовывается.

 

Вопрос 5:Какой метод следует использовать, чтобы обнаружить позицию буквы v в строке str= "Java"?

 1. mid(2,str); 

 2. str.charAt(2); 

 3. str.indexOf('v'); 

 4. indexOf(str,'v'); 

Ответ:3

Для решения этой или подобной задачи советую смотреть документацию по JAVA, представленной, например, по адресу http://java.sun.com/javase/6/docs/api/. Там описывается какие функции какие значения возвращают для все стандартных классов платформы JAVA SE.

 

 

Вопрос 6:Дан код:

String str="ava";

char ch='J';

ch+=str;

System.out.println(ch);

В результате при компиляции и запуска будет выведено: 

 1. Java 

 2. ava

 3. avaJ

 4. J

 5. Ошибка во время компиляции

Ответ:5. Не определена операция += для char String. И String не может привести к int и char к String.

 

Вопрос 7:

Что будет результатом компиляции и выполнения следующего кода?

StringBuffer s= new StringBuffer("You Java");

s.insert(2, "like ");

System.out.print(s);

 

 1. Yolike u Java

 2. You like Java

 3. Ylike ou Java

 4. You Java like

 5. Ошибка компиляции: метод insert() не объявлен для класса String-Buffer 

Ответ:1. Советую посмотреть справку по JAVA для StringBuffer. Класс StringBuffer является близнецом класса String, но, в отличие от последнего, содержимое и размеры объектов класса StringBuffer можно изменять. Метод insert в нём определён, индексирование для Java стандартное, т.е. с нуля.

 

Вопрос 8:Дан код:

public class Quest6 {

public static void main(String[] args){

int a[] = new int[]{1,2,3,};

System.out.print(a[1]);

 } }

Что будет выведено при попытке компиляции и запуска программы?

 1. Ошибка компиляции: не определен размер массива 

 2. Ошибка времени выполнения 

 3. Выведено: 1

 4. Выведено: 2

 5. Ошибка компиляции: неправильная инициализация

Ответ:4

Если ошибка синтаксиса должно было бы быть 1, если во времени выполнение непозволительные аргументы или с неопределённой ссылкой -2, в данном случае ошибок нет.

 

Вопрос 9:Дан код:

public class Quest8{

static int j=2;

 public static void result(int i){

       i *= 10;

       j += 2;

}

public static void main(String[] args){

       char i = ’1’;

       result(i);

       System.out.println(i+" "+j);

} }

Что будет выведено при попытке компиляции и запуска программы?

 1. 1 2

 2. 10 2

 3. Ошибка: параметр метода result() не сочетается с передаваемой переменной 

 4. 10 4

 5. 1 4 

Ответ:5. Третий ответ неверен, т.к. char приводится к int (в этом его особенность и уникальность). 1(char) переводится к 1, ну а j прибавляется в функции ещё 2(2+2), а то что она static не должно смущать, потому как она как любая другая статическая переменная будет одна для всех классов, но изменять её значение можно.

 

Вопрос 10: Дан код:

public class Quest {

  {System.out.print("1");}

static{System.out.print("2");}

Quest(){System.out.print("3");}

       public static void main(String[] args) {

                   System.out.print("4");

       } }

В результате при компиляции и запуске будет выведено:

 1. 34

 2. 24

 3. 14

 4. 4 

 5. 1234

 6. 234

Ответ:2. При запуске приложения выполняются только статические логические блоки класса приложения и тело метода main().

 

Вопрос 11:Какие из следующих утверждений истинные?

 1. Частные методы не могут быть перегружены

 2. Переопределенный метод не может включать исключения не обрабатываемые в базовом классе

 3. Методы, объявленные как final, не могут быть переопределены

 4. Статические методы не могут быть переопределены

Ответ:3.

 

Вопрос:Дан код:

class Base {}

class A extends Base {}

 public class Quest{

public static void main(String[] args){

       Base b = new Base();

       A ob = (A) b;

} }

В результате при компиляции и запуске будет выведено: 

 1. Ошибка во время выполнения

 2. Ничего: компиляция и выполнение без ошибок

 3. Ошибка во время компиляции

Ответ:3. Во время выполнения при попытке преоббразования с сужением типа будет сгенерировано исключение ClassCastException

 

Вопрос 12:Дан код:

abstract class QuestBase {

 abstract void show();

 static int i;

}

public class Quest2 extends QuestBase {

 public static void main(String[] args){

 boolean[] a = new boolean[3];

 for(i = 0; i < a.length; i++)

 System.out.print(“ ” + a[i]);

 } }

В результате при компиляции и запуске будет выведено:

 1. Ошибка времени компиляции: Quest2 должен быть объявлен как abstract

 2. Ошибка времени выполнения: IndexOutOfBounds

 3. true true true

 4. false false false

 5. Ошибка: массив a использован прежде, чем проинициализирован

Ответ:1

Код не будет откомпилирован, так как подкласс наследует абстрактный класс и при этом не реализует его абстрактный метод м сам не объявлен как абстрактный

 

Вопрос 13:Какие из объявлений корректны, если:

class Outer{

class Inner{

} }

 1. new Outer.Inner(); 

 2. Outer.new Inner(); 

 3. new Outer.new Inner(); 

 4. new Outer().new Inner() 

 5. Outer.Inner(); 

 6. Outer().Inner() 

 7. Ни одно из приведенных 

Ответ: 4

Объявить объект внутреннего(нестатического) класса можно, только предварительно создав объект внешнего класса. Конструкторы обоих классов должны вызываться так же, как и для всех других классов, т.е. С помощью оператора new.

 

Вопрос 14:Что будет выведено в результате компиляции и выполнения следующего кода:

abstract class Abstract {

       abstract Abstract meth();

}

class Owner {

       Abstract meth() {

                   class Inner extends Abstract {

                              Abstract meth() {

                                          System.out.print("Inner ");

                                          return new Inner();

                              }     }

                   return new Inner();

       } }

public abstract class Quest4 {

       public static void main(String a[]) {

                   Owner ob = new Owner();

                   Abstract abs = ob.meth();

                   abs.meth();

       } }

 1. Inner 

 2. Inner Inner 

 3. Inner Inner Inner 

 4. Compile time error 

 5. Runtime error 

 6. Ошибка компиляции из-за двойного объявления meth() в классе Owner 

Ответ:1

В результате выполнения кода Owner ob = new Owner(); будет создан объект Owner. Его метод meth() создаст объкт типа Inner в результате выполнения кода Abstract abs = ob.meth(); При его выполнении на консоль ничего выведено не будет, так как метод meth() класса Inner, выводящий на консоль строку inner, будет вызван только один раз командой abs.meth()

Вопрос 15:Корректен ли следующий код? Если нет, то какие исправления можно предложить?

byte b[]={1, 2, 3};

Object o=b;

o=new String[]{“”, “a”, “b”};

String s[]=o;

Ответ: Нет. В 4 строке делается попытка неявного сужения типов от Object к

String[]. Такое действие нужно делать явно:

String s[]=(String[])o;

 

Вопрос 16:Корректно ли следующее обращение к переменной x?

public class Test {

static void perform() {

...

}

private Test x;

public static void main(String s[]) {

x.perform(); // корректно ли это выражение?

}

}

Ответ: Нет, не корректно. Хотя при обращении к статическим элементам через

имя переменной, используется лишь ее тип, а не значение, в данном

примере производится попытка обратиться к динамической переменной

из статического метода, чего делать нельзя, несмотря на то, что для

вычисления выражения требуется лишь тип переменной.

 

 

Вопрос 17:Можно ли при переопределении некоторого абстрактного метода perform()

использовать выражение super.perform()?

Ответ: Нет, выражение super.perform() означает полноценный вызов

родительского метода, что невозможно, если у него отсутствует тело, что

верно для абстрактных методов.

 

Вопрос 18

Как реализованы в классе Object методы equals(), toString(), hashCode() ?

Ответ:В классе Object методы equals(), toString() и hashCode() имеют следующие

реализации:

equals() – возвращает true, если ссылки на объекты совпадают

toString() – возвращает строку, которая составляется следующим образом:

название класса, символ ‘@’, значение, возвращаемое вызовом метода

hashCode(), представленное в шестнадцатеричном виде

hashCode() – имеет native реализацию, возвращающую адрес, по которому

хранится объект.

 

Вопрос 19

Какие действия необходимо предпринять для установления TCP соединения между

двумя Java-приложениями?

Ответ:Во-первых, на стороне сервера надо создать экземпляр класса Server-

Socket с указанием порта, и затем вызвать у этого объекта метод accept().

При входе в этот метод поток исполнения приостанавливает свою работу

в ожидании подключения клиента.

Клиенту необходимо создать экземпляр класса Socket с указанием IP-

адреса и порта сервера. После успешного выполнения конструктора на

стороне сервера метод accept() вернет экземпляр класса Socket для

взаимодействия двух приложений.

 

Вопрос 20: Какие объекты могут быть клонированы?

Ответ: Если клонирование производится встроенным методом Object.clone(), то

такие классы необходимо специальным образом помечать, указывая, что

они реализуют интерфейс Cloneable. Кроме этого, класс может

переопределить метод clone() собственным образом, и обойтись без этого

интерфейса

Создание визуальных приложений

Вопрос 1Дан кодimport java.awt.*;public class Quest2 extends Frame{ Quest2(){ Button yes = new Button("YES"); Button no = new Button("NO"); add(yes); add(no); setSize(100, 100); setVisible(true); } public static void main(String[] args){ Quest2 q = new Quest(); } }

В результате при компиляции и запуска будет выведено:

a Две кнопки рядом, занимающие весь фрейм, YES слева и NO справа

b Одна кнопка YES, занимающая целый фрейм

c Одна кнопка NO, занимающая целый фрейм 

d Две кнопки наверху фрейма, YES и NO

 Ответ: с

Пояснение: по умолчанию у Frame менеджер компоновки BorderLayout а у BorderLayout если не указан второй аргумент, то элемент является BorderLayout.CENTER.

Вопрос 2

Какой менеджер компоновок размещает компоненты в таблице с ячейками равного размера?

 a. FlowLayout 

 b. GridLayout 

 c. BorderLayout 

 d. CardLayout 

Ответ: b

FlowLayout– менеджер поточной компоновки. CardLayout создает вкладки, содержимое которых отображается при выполнении щелчка на заголовке. BorderLayout позволяет позиционировать элементы в областях фиксированного размера, граничащих со сторонами фрейма, которые обозначаются параметрами: NORTH, SOUTH, EAST, WEST. Остальное пространство обозначается как CENTER. GridLayout разделяет фрейм на заданное количество рядов и колонок.

 

Вопрос 3

Какое выравнивание устанавливается по умолчанию для менеджера размещений FlowLayout?

 а. Указывается явно 

 b. FlowLayout.RIGHT 

 c. FlowLayout.LEFT 

 d. FlowLayout.CENTER 

 e. FlowLayout.LEADING 

Ответ: c

 

Вопрос 4

Cколько кнопок будет выведено в апплет:

 import java.applet.*;

 import java.awt.*;

 public class Quest4 extends Applet{

Button b = new Button("Yes");

public void init(){

add(b);

add(b);

add(b);

add(new Button("No"));

add(new Button("No"));

add(new Button("No"));

 }}

 a. 1 кнопка с надписью ''Yes'' и 1 кнопка с надписью ''No'' 

 b. 1 кнопка с надписью ''Yes'' и 3 кнопки с надписью ''No'' 

 c. 3 кнопки с надписью ''Yes'' и 1 кнопка с надписью ''No'' 

 d. 3 кнопки с надписью ''Yes'' и 3 кнопки с надписью ''No'' 

Ответ b

Пояснение: Команда add(b), вызванная во второй раз, пытается добавить на аплет уже существующий там объект. Команда add(new Button("No")) каждый раз добавляет новый объект

 

 

Вопрос 5

Объект JСheckBox объявлен следующим образом:

JCheckBox ob = new JCheckBox();

Какая из следующих команд зарегистрирует его в блоке прослушивания событий?

 a. addItemListener(this); 

 b. addItemListener(); 

 c. ни одна из приведенных 

 d. ob.addItemListener(); 

 e. ob.addItemListener(this); 

Ответ: e

Пояснение: Метод всегда вызывается объектом, который необходимо зарегистрировать. В качестве параметра должен передаваться объект приложения или аплета, в котором размещается данный компонент, если он реализует соответствующий интерфейс .

 

Вопрос 6

Что будет выведено в результате компиляции и выполнения следующего кода?

import java.awt.*;

class Quest5 extends Thread implements Runnable{

       public static void main(String[] args) {

                   Component btn = new Button("Кнопка 1");

                   System.out.println(((Button) btn).getLabel());

       } }

 a. Кнопка 1 

 b. Ошибка компиляции: Quest5 должен наследоваться от Applet 

 c. Ошибка компиляции: не определен метод run() интерфейса

 d. Ошибка компиляции: ссылка на Component не может быть инициализирована объектом Button 

 e. Ошибка времени выполнения 

 f. Ничего не будет выведено

Ответ: a

Пояснение: Объекты из пакета AWT могут объявляться и вызывать свои методы из любых приложений

Вопрос 6

Дан код:

 < applet code=MyApplet.class height=200>

 < param name=count value=5>

 < /applet>

Какой код читает параметр count в переменную i?

 a. int i = getIntParameter(''count''); 

 b. int i = getParameter(''count''); 

 c. int i = new Integer(getIntParameter(''count'')).intValue(); 

 d. int i = new Integer(getParameter(''count'')); 

 e. int i = new Integer(getParameter(''count'')).intValue(); 

Ответ: e

 

Вопрос 7

В пользовательском методе show() был изменен цвет фона (background) апплета. Какой метод должен быть вызван, чтобы это было визуализировано?

 a. draw() 

 b. start() 

 c. repaint() 

 d. setColor() 

 e. setbgcolor() 

Ответ: c

Пояснение: Для того чтобы изменения цвета фона стали видны пользователю, требуется перересовка всего атлета вызовом метода paint(). Это действие можно выполнить, вызвав методы repaint() или update().

 

Вопрос 8

Выбрать необходимое условие принадлежности класса к апплетам?

 a. Наследник класса Applet и у него должен отсутствовать метод main() 

 b. Наследник класса Applet или его подкласса 

 c. Наследник класса Applet и в нем необходимо переопределить унаследованный от класса Applet метод paint() 

 d. Наследник класса Applet и в нем необходимо переопределить унаследованный от класса Applet метод init() 

 e. Наследник класса Applet и все его методы должны быть объявлены со спецификатором public 

Ответ: b

 

Вопрос 9

Дан код:

import java.awt.*;

import java.awt.event.*;

public class Quest3 extends Frame implements WindowListener{

public Quest3(){

   setSize(300,300);

   setVisible(true);

   }

public void windowClosing(WindowEvent e){

           System.exit(0);

           }

public static void main(String args[]){

   Quest3 q = new Quest3 ();

   } }

Что будет выведено в результате компиляции и запуска? 

 a. Ошибка компиляции 

 b. Компиляция и запуск с выводом пусого фрейма 

 c. Компиляция без запуска 

 d. Ошибка времени выполнения 

Ответ: a

Пояснение: Попытка компилировать данный код приведёт к ошибке вследствии того, что часть методов интерфейса WindowListener не реализована в классе Quest3

 

Вопрос 10

Дан код:

class Quest implements Runnable{

       int i=0;

                   public int run(){

                    System.out.println("i="+ ++i);

                    return i;

        }}

public class Quest1 {

       public static void main(String[] args) {

                   Quest ob = new Quest();

                   ob.run();

}}

В результате компиляции и запуска будет выведено: 

 a. Ошибка компиляции: неправильно определен метод run() 

 b. Ошибка времени выполнения: поток запускается методом start() 

 c. Ошибка компиляции: Объект ob нужно создавать, используя конструктор класса Thread. 

 d. i=1 

 e. i=0

Ответ: a

Пояснение: Объект потока создаётся только после вызова конструктора класса Thread или его подкласса, но к ошибке компиляции создание такого объкта, как в примере, не приведёт. Поток всегда запускается вызовом метода start(). Результатом же вызова метода run() будет выполнение кода метода run, никак не связанное с потоком. В данной ситуации ошибка компиляции произойдёт из-за того, что сигнатура метода run() в интерфейсе Runnable не совподает с его реализацией в классе Quest, т.е. метод не реализован и класс Quest должен быть объявлен как abstract

 

Вопрос 11

Дан код:

 class Quest5 extends Thread {   

Quest5 () { }

Quest5 (Runnable r) { super(r); }   

   public void run() {

       System.out.print("YES ");       

   }

       public static void main(String[] args)   {

     Runnable r = new Quest5(); //1

Quest5 t = new Quest5(r); //2

       t.run();                    

   } }

 

В результате компиляции и запуска будет выведено: 

 a. YES YES

 b. Ошибка компиляции в строке //1. 

 c. Ошибка компиляции в строке //2. 

 d. YES  

Ответ: d

Пояснение: При запуске приложения будет создано два потока r и t, но стартует только второй. Поток t инициирован с использованием ссылки на первый поток. Это обстоятельство в данном контексте не оказывает влияния на выполнение второго потока. В итоге метод run() будет вызван только один раз.

Вопрос 12

Дан код:

import java.util.*;

class Quest4 {

public static void main (String args[]) {

Object ob = new HashSet();

System.out.print((ob instanceof Set)+",");

System.out.print(ob instanceof SortedSet);

}}

 

Что произойдет при попытке компиляции и запуска программы?

 a. true, false

 b. true, true

 c. false, true

 d. false, false

 e. ничего из вышеперечисленного

Ответ: a

 


Дата добавления: 2018-04-04; просмотров: 604; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!