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

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

+114

  • Кто проходил: Андрей1
  • Дата прохождения: 01.02.2019
Каким будет результат выполнения данного кода:
public class Main { 
   public static void main(String[] args) { 
       int var = 1; 
       System.out.println("Переменная var (постфиксный инкремент): " + var++); 
       System.out.println("Переменная var (префиксный инкремент): " + ++var); //1 
       int var1 = 1; 
       int var2 = 1; 
       if (var1++ == ++var2)  //2 
           System.out.println("Переменные равны"); 
       else  
           System.out.println("Переменные не равны"); 
   } 
} 
Ваши ответы
Переменная var (постфиксный инкремент): 1
Переменная var (префиксный инкремент): 3
Переменные не равны
Объяснение:

Операторы инкремента и декремента имеют 2 формы: постфиксная и префиксная. Разница между формами в том, что постфиксная форма оператора выполняется после вычисления выражения, а префиксная до. Т.о. строка с постфиксным выражением var++ даст нам исходное значение переменной var (1), а префиксное — новое значение (3).
По этой же причине при сравнении значений выражений var1++ и ++var2 они будут не равны.

Каким будет результат выполнения данного кода
public class Commentator { 
   public static void main( String[] args ) { 
   /*System.out.println( "Line1" ); 
     System.out.println( "Line2" );*/ 
 
   //System.out.println( "Line3" ); 
   System.out.println( "Line4" );// 
 
   System.out.println( "/*Line5*/" ); 
   System.out.println( "//Line6//" ); 
   } 
} 
Ваши ответы
Line4
/*Line5*/
//Line6//
Объяснение:

Однострочный комментарий // не является спец-символом внутри текстового литерала.

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

Да, если два объекта равны (метод equals() для них возвращает значение true), то метод hashCode() для каждого из них должен возвращать одинаковое целочисленное значение.
P.S. В соответствии с контрактом - "equal objects must have equal hash codes"

Что произойдет в результате выполнения следующего кода?
public class Main { 
   public static void main(String args[]) { 
       byte b = 0; 
       while (++b > 0); 
       System.out.println(b); 
   } 
} 
Ваши ответы
На экран выведется число -128
Объяснение:

Переменные типа byte хранят значение в диапазоне -128 .. 127. Когда значение переменной "b" в цикле дойдет до максимального значение этого типа (127), тогда следующий инкремент (++) установит значение на минимальное (-128). Так сказать начнёт новый отсчёт.

Какой результат компиляции и запуска следующего кода с использованием параметров a = 0 , b = 3?
public void divide(int a, int b) { 
   try { 
       int c = a / b; 
   } catch (Exception e) { 
       System.out.print("Exception "); 
   } finally { 
       System.out.println("Finally"); 
   } 
} 
Ваши ответы
Будет выведено Finally
Объяснение:

Блок finally выполняется всегда за исключением некоторых вариантов
0/3 = 0 не выкидывает исключительной ситуации

Отметьте варианты ответа, в которых пары чисел равны друг-другу (2 правильных ответа):
Ваши ответы
5 и 05
0x5A и 90L
Объяснение:

Цифры, начинающиеся с нуля, в Java являются восьмеричными, а с 0x - шестнадцатеричными.
05 = 5, 010 = 8, 0x5A = 90, а числа 09 в восьмеричной системе существовать не может.

Какими способом(-ами) может быть выражено число 28?
Ваши ответы
034
Каким образом можно запретить наследование класса (речь идет о top-level классах) ?
Ваши ответы
Добавить модификатор final
Каким будет результат выполнения кода:
package tests; 
 
import java.util.Hashtable; 
 
public class Test { 
 public static void main(String[] args) { 
   Hashtable ht = new Hashtable(); 
   ht.put("1", "2"); 
   ht.put("2", "3"); 
   ht.put("3", "4"); 
   ht.put("4", "2"); 
 
   if(ht.contains("1")){ 
     System.out.print("1"); 
   } 
   if(ht.contains("2")){ 
     System.out.print("2"); 
   } 
   if(ht.contains("3")){ 
     System.out.print("3"); 
   } 
   if(ht.contains("4")){ 
     System.out.print("4"); 
   } 
 } 
}
Ваши ответы
Ничего из вышеперечисленного
Объяснение:

На экран выведется 234, так как метод contains в классе Hashtable проверяет наличие значений в списке values, а не keys.

Какой будет результат выполнения кода:
class A {  
   private int counter = 0;  
   public static int getInstanceCount() { 
       return counter; 
   }  
   public A() { 
       counter++; 
   } 
} 
public class B { 
   public static void main(String ar[]) { 
       A a1 = new A(); 
       A a2 = new A(); 
       A a3 = new A(); 
       System.out.println(A.getInstanceCount()); //1 
   } 
}    
Ваши ответы
Ошибка компиляции класса А
Объяснение:

Нельзя использовать в статическом методе нестатические поля класса.

Какой результат выполнения данного кода:
System.out.println( 0.3 == 0.1d + 0.1d + 0.1d ); 
Ваши ответы
false
Объяснение:

Правильный ответ на этот вопрос связан со способом представления дробных чисел в памяти компьютера. Напомним, что они хранятся в двоичном коде.
Если попробовать перевести 0.1 в двоичную систему счисления, то получится БЕСКОНЕЧНАЯ двоичная дробь 0,000110011001100110011001100... Поскольку в памяти компьютера число представляется с помощью КОНЕЧНОГО количества двоичных разрядов (например, под значение типа double отводится 64 бита), то бесконечная двоичная дробь просто округляется. То число, которое получается в результате округления, будет чуть-чуть (на одну многомиллионную) отличаться от 0.1. Аналогично, двоичное представление для 0.3 будет чуть-чуть отличаться от 0.3.
Получается, что в примере сравниваются два числа, каждое из которых примерно равны 0.3, но они не равны между собой.
Если взять числа с другим двоичным представлением, будет другой результат. Например, System.out.println( 0.375 == 0.125d + 0.125d + 0.125d ) выводит true.

Какие из перечисленных идентификаторов являются корректными?
Ваши ответы
int
В какой строке возникнет ошибка компиляции:
public class Test { 
   public static void main(String\u005B\u005D args) { // 2 
       char a = '\u005B'; // 3 
       char c = '\u005D'; // 4 
       System.out.println(a * c); // 5 
   } 
}
Ваши ответы
5
Объяснение:

Последовательности, начинающиеся с \u, можно даже указывать за пределами символьных констант или строк. Приведенный пример корректен, так как последовательности \u005B и \u005D соответствуют символам [ и ].

Какие из следующих утверждений верны?
Ваши ответы
non-static метод не может быть вызван из другого нестатического метода без создания экземпляра этого класса
Объяснение:

Статический метод может быть вызван из нестатического, обратное неверно, так как статический метод может быть вызван без создания экземпляра класса и имеет доступ только к статическим полям и методам класса. Использование спецификатора private не ограничивает видимость поля или метода внутри объявления класса. Ничто не мешает методу быть объявленным final static.

Что будет выведено на экран в результате выполнения кода?
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-а в конструкторе.