Результаты прохождения теста Java основы пользователем Андрей1

Результат прохождения теста "Java основы" - Пройден

+95

  • Кто проходил: Андрей1
  • Дата прохождения: 04.02.2019
Рассмотрим следующий код:
import java.util.*; 
class MyDataStore { 
   public static void main(String [] args) { 
       // Вставьте код 
       structure.put("a", 420); 
       System.out.println(structure.get("a")); 
   } 
} 
 
Какие из приведённых вариантов можно вставить в строчку 4 (независимо друг от друга), чтобы класс успешно компилировался и выполнялся?
Ваши ответы
Map structure = new TreeMap();
Каким будет результат компиляции и запуска следующей программы?
public class Test { 
   public static void main(String[] args) { 
       int i = 1; 
       long j = 1; 
       if (i == 1) { 
           int k = 1; 
           if (i == k) { 
               System.out.println("i equals k"); 
           } 
       } else if (j == k) { 
           System.out.println("j equals k"); 
       } 
   } 
} 
Ваши ответы
Ошибка компиляции
Что произойдет в результате компиляции и выполнения программы:
class HashTest { 
   private static Set<String> set = new LinkedHashSet<String>(); 
   public static void main(String[] args) { 
       set.add("one"); 
       set.add("two"); 
       set.add("three"); 
       set.add("/u000a"); 
       set.add("/u000d"); 
       set.add("/u000c"); 
       set.add("1"); 
       set.add("2"); 
       set.add("3");         
       for (String string : set) { 
           System.out.print(string + " "); 
       } 
   }  
} 
Ваши ответы
one two three /u000a /u000d /u000c 1 2 3
Объяснение:

LinkedHashSet запоминает порядок вставки элементов. По мере вставки вхождений в таблицу они присоединяются к двунаправленному связному списку.
Итератор будет перечислять значения в том порядке, в каком они были вставлены.

Выберите правильные высказывания относительно концепции взаимосвязи методов hashCode() и equals(Object o)
Ваши ответы
Если при сравнении двух объектов метод equals возращает значение true, то значения, возвращаемые методами hashCode() этих объектов, должны совпадать.
Объяснение:

Ключевая концепция взаимосвязи методов hashCode() и equals(Object o) предполагает возвращение одинаковых значений хеша в случае равенства объектов, но не обязывает возвращать разные значения в случае неравенства объектов.

Что будет напечатано в результате компиляции и выполнения данного кода?
public class TestClass { 
   public static void main(String[] args) { 
       Base sub = new Sub(); 
       sub.test(); 
   } 
} 
 
class Base { 
   public static void test() { 
       System.out.println("Base.test()"); 
   } 
} 
 
class Sub extends Base { 
   public static void test() { 
       System.out.println("Sub.test()"); 
   } 
} 
Ваши ответы
Base.test()
Объяснение:

Для вызова статических методов используется механизм раннего связывания, при котором вызываемый метод определяется исходя из типа переменной-ссылки, а не из фактического типа присвоенного объекта.

Скомпилируется ли следующий код:
public abstract class One { 
   public abstract int doJob(); 
} 
class Two extends One { } 
Ваши ответы
Нет
Объяснение:

Неабстрактный класс должен реализовывать абстрактные методы базовых классов/интерфейсов

Что будет напечатано следующим кодом?
public class Main { 
   public static void var(Integer x, int y) { 
       System.out.println("Integer int"); 
   } 
 
   public static void var(Object... x) { 
       System.out.println("Object"); 
   } 
 
   public static void var(int... x) { 
       System.out.println("int... x"); 
   } 
 
   public static void var(Integer... x) { 
       System.out.println("Integer..."); 
   } 
 
   public static void main(String... args) {  
       int i = 0; 
       Integer i2 = 127; 
       var(i, i2); 
   } 
} 
Ваши ответы
Integer int
Объяснение:

При вызове перегруженных (overloaded) методов компилятор:
1) сначала ищет метод, типы параметров которого в точности совпадают с аргументами;
если такого метода не нашлось, то
2) затем ищет метод с параметрами, которые могут быть получены с помощью допустимых при вызове преобразований (widening, boxing+widening, unboxing+widening);
если и такого метода не нашлось, то
3) затем анализируются методы с переменным количеством аргументов.
В данном примере компилятор останавливается на втором шаге (срабатывают преобразования int→Integer, Integer→int).

Что будет выведено на экран после выполнения следующего кода?
class Test { 
   public static void main(String[] args){ 
       int x = 1; 
       Integer y = new Integer(x); 
       int [] z = {x}; 
 
       func(x, y, z); 
 
       System.out.print(x); 
       System.out.print(y); 
       System.out.println(z[0]); 
   } 
 
   static void func (int x, Integer y, int[] z) { 
       x++; 
       y++; 
       z[0]++; 
   } 
} 
Ваши ответы
112
Какой результат выполнения данного кода:
Integer i = 5000; 
System.out.println(i.hashCode()); 
Ваши ответы
5000
Объяснение:

Классы-оболочки целочисленных типов (Byte, Character, Short, Integer) в качестве хэш-кода возвращают хранящееся в них значение.

Какой будет результат компиляции и выполнения данного кода?
public class Test { 
   public static void main(String[] args) { 
       float f = 1.0 + 1.0f; 
       f = f + 1; 
       System.out.println( f/0 ); 
   } 
} 
Ваши ответы
Ошибка компиляции
Какой результат выполнения данного кода:
System.out.println(Math.sqrt(-2.0)); 
System.out.println(1.0/0.0); 
Ваши ответы
NaN
NaN
Что будет выведено, если скомпилировать и запустить следующий код:
public class Main { 
   public static void puzzle2x2(){ 
       System.out.println("2 + 2 = " + 2 + 2); 
   } 
   public static void main(String args[]) { 
       Main.puzzle2x2(); 
   } 
} 
Ваши ответы
2 + 2 = 2 + 2
Объяснение:

Действия выполняются по порядку слева направо. Из-за того, что первым операндом является строка, осуществляется конкатенация (склеивание) строк. Чтобы получить математически корректный пример, можно изменить порядок действий с помощью скобок:

Каким будет результат компиляции и запуска следующей программы?
public class App1 { 
   public static void main(String[] args) { 
       System.out.println(addToString("12345678910",',')); 
   } 
 
   public static StringBuffer addToString(String s, char c) { 
       StringBuffer b = new StringBuffer(s); 
       int p = 0; 
       for (int i = 1; i < b.length(); i++) { 
           if (i%3 == 0) { 
               b.insert(b.length()-i-p, c);  
               p++; 
           } 
       } 
       return b; 
   } 
} 
Ваши ответы
Ошибка компиляции
Объяснение:

Следует учитывать, что строка динамически изменяется: при i = 3 символ вставляется в 8-ю позицию; получаем b = "12345678,910", b.length() = 12 при i = 6 символ вставляется в 5-ю позицию; получаем b = "12345,678,910", b.length() = 13 при i = 9 символ вставляется во 2-ю позицию; получаем b = "12,345,678,910", b.length() = 14 при i = 12 цикл продолжает выполняться (ведь 12 < 14), происходит попытка вставить символ в -1-ю позицию - и тут выбрасывается exception

Результат выполнения программы :
public class A { 
   public static void main(String[] args) { 
       Boolean f1 = true; 
       Boolean f2 = new Boolean("/false"); 
       String a = "" + 1 + '+' + 1 + '=' + (1 + 1) + " is "; 
       String b = a + f1 + '/' + f2; 
       System.out.println(b); 
   } 
} 
Ваши ответы
1+1=2 is true//false
Что будет выведено на экран в результате выполнения кода?
import java.util.TreeSet; 
 
public class TestTreeSet { 
 
   public static void main(String[] args) { 
       TreeSet<Item> set = new TreeSet<Item>(); 
       set.add(new Item(2)); 
       set.add(new Item(5)); 
       set.add(new Item(2)); 
       System.out.println(set); 
   } 
 
   static class Item { 
       int n; 
       Item(int n) { 
           this.n = n; 
       } 
       public String toString() { 
           return "Item " + n; 
       } 
   } 
} 
Ваши ответы
[Item 2, Item 2, Item 5]
Объяснение:

Будет выброшен ClassCastException, т.к. в TreeSet для упорядочивания элементов используется метод compareTo(или compare), соответственно, в нем могут храниться объекты, реализующие интерфейс Comparable, либо необходимо передавать свою реализацию Comparator-а в конструкторе.