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

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

+114

  • Кто проходил: Андрей1
  • Дата прохождения: 05.02.2019
У каких операторов всегда вычисляются все операнды (выберите все подходящие варианты)?
Ваши ответы
%
Объяснение:

Оператор || не вычисляет значение второго операнда, если первый операнд имеет значение true.
Оператор && не вычисляет значение второго операнда, если первый операнд имеет значение false.
Оператор ?: в зависимости от истинности условия вычисляет значение только одного из двух выражений.

Какой результат выдаст этот код:
int []a = {5,5}; 
int b = 1; 
a[b] = b = 0; 
System.out.println(Arrays.toString(a)); 
Ваши ответы
[5, 0]
Что напечатает следующий код?
public class Test { 
   { 
       System.out.println("Block"); 
   } 
   int x = getX(); 
 
   static { 
       System.out.println("Static block"); 
   } 
 
   public int getX() { 
       System.out.println("X variable"); 
       return 5; 
   } 
 
   static int y = getY(); 
   public static int getY() { 
       System.out.println("Y variable"); 
       return 6; 
   } 
 
 
   public static void main(String[] args) { 
       Test m = new Test(); 
   } 
}  
Ваши ответы
Static block
Y variable
Block
X variable
Объяснение:

Сначала выполняются блоки статической инициализации и инициализируются статические поля (в том порядке, в котором они записаны), поэтому срабатывают "Static block" и "Y variable".
Затем выполняются простые блоки инициализации и инициализируются не-статические поля (в том порядке, в котором они записаны), поэтому срабатывают "Block" и "X variable"

Дан код:
public class OverrideThrowsTest { 
   public static void main(String[] args) 
       // 1 
   { 
       A a = new A(); 
       a.method(); 
       A ab = new B(); 
       ab.method(); 
       B b = new B(); 
       b.method(); 
   } 
} 
 
class A { 
   public void method() throws IOException {} 
} 
 
class B extends A { 
   public void method() throws FileNotFoundException {} 
} 
 
Выберите все правильные ответы, при которых код скомпилируется,
если вставить их в строку 1:
Ваши ответы
throws IOException
throws Exception
Объяснение:

FileNotFoundException extends IOException,
IOException extends Exception. Необходимо объявить такой throws, который охватывал бы здесь все возможные исключения. В данном случае это IOException и Exception.

Дан код:
class A { A(int i) {} }  // 1 
class B extends A {}   // 2 
 
Какие из следующих утверждений верны? (выберите два)
Ваши ответы
ошибка во время компиляции в строке 2
Объяснение:

Компилятор создаст конструктор по умолчанию для класса В, который для создания объекта попытается вызвать несуществующий конструктор без параметров класса А. В итоге будет сгенерирована ошибка компиляции в строке 2.

Что будет результатом компиляции кода:
class Quest3 { 
   public static void main(String s[ ]) { 
       String args; 
       System.out.print(args + s); 
   }  
}  
Ваши ответы
Ошибка компиляции: переменная args используется до инициализации
Объяснение:

Если переменная объявлена в методе, то до своего использования она должна быть проинициализирована, иначе компилятор сообщает об ошибке.
При инициализированном значении переменной args в методе print() ошибка не возникает, так как оператор сложения инициирует действия по преобразованию в строку всех участвующих в конкатенации объектов.
Параметр String[] args в main() – просто соглашение, и может быть использован любой приемлемый идентификатор для массива строк.

Каким будет результат выполнения данного кода?
public class Main { 
   public static void main(String[] args) { 
       int i = 0; 
       int j = 1; 
       System.out.println(i += (j < i) ? (2) : (3)); //1 
   } 
} 
Ваши ответы
3
Объяснение:

В данном примере используется условное выражение (условие) ? (значение1) : (значение2) . В этом выражении перед знаком вопроса ставится условие, а после него через : идут 2
возвращаемых значения. Первое будет возвращено в случае если условие вернёт значение true, в противном случае будет возвращено 2-ое значение.

Наследует ли класс конструкторы своего суперкласса?
Ваши ответы
Нет
Объяснение:

Класс-потомок явно или неявно вызывает конструкторы класса-предка, но не наследует их.

Перечислите все валидные сигнатуры конструкторов некоторого класса Clazz:
Ваши ответы
Clazz()
Объяснение:

Конструкторы не могут возвращать значение, даже void

Выберите все правильные варианты создания массивов.
Ваши ответы
int[] ia = new int [15];
Объяснение:

В Java массивы тоже являются объектами.

Что будет выведено на экран?
public class Tasks { 
   public static Tasks instance = new Tasks(); 
   private static final int DELTA = 5; 
   private static int BASE = 7; 
   private int x; 
 
   public Tasks() { 
       x = BASE + DELTA; 
   } 
   public static int getBASE() { 
       return BASE; 
   } 
   public static void main(String[] args) { 
       System.out.println(Tasks.instance.x); 
   } 
} 
Ваши ответы
5
Объяснение:

Инициализация статических полей осуществляется в том порядке, в котором они записаны.
В этом примере первым будет проинициализировано поле instance, а уже затем - BASE. Поэтому в момент вызова конструктора Tasks() поле BASE ещё содержит 0.
Поле DELTA является переменной-константой, поэтому компилятор сразу подставляет в выражение вместо DELTA его значение.
В итоге получаем: x = 0 + 5;

Что будет напечатано при компиляции и выполнении данного кода?
String d = "beekeeper"; 
d.substring(1,7); 
d = "w" + d; 
d.insert(3, "bee"); 
System.out.println(d); 
Ваши ответы
wbeekeeper
Объяснение:

Класс String является immutable и не содержит метод insert() При изучении классов StringBuffer и StringBuilder обычно акцентируется внимание на их отличиях от String: их содержимое может быть модифицировано с помощью специальных методов - append, insert, delete. Если знать этот факт, то при ответе на вопрос особых затруднений не возникает

Какой результат выполнения данного кода?
public class Starter extends Thread { 
   private int x = 2; 
 
   public static void main(String[] args) throws Exception { 
       new Starter().makeItSo(); 
   } 
 
   public Starter() { 
        x = 5; 
        start(); 
   } 
 
   public void makeItSo() throws Exception { 
       join(); 
       x = x - 1; 
       System.out.println(x); 
   } 
 
   public void run() { x *= 2; } 
} 
Ваши ответы
Ошибка компиляции
Объяснение:

Сначала происходит создание нового объекта - new Starter() - и сразу же вызывается его метод - makeItSo()

Какой результат будет получен при компиляции и выполнении данного кода:
public class Main { 
   public static void main(String [] str) { 
       Boolean b1 = new Boolean("false");                //1 
       if (b1 = true) System.out.println("b1=" + b1);    //2 
 
       boolean b2 = false;         
       if (b2 = true) System.out.println("b2=" + b2);    //3 
 
       int i = 1;         
       if (i = 2) System.out.println("i=" + i);          //4 
   }     
} 
Ваши ответы
Ошибка компиляции в строке 2
Что выведет в консоль следующий код?
import java.util.List; 
import java.util.concurrent.CopyOnWriteArrayList; 
 
public class Test { 
 
   private static void removeAndPrint(List<String> list) { 
       for (String str : list) { 
           if (str.equals("two")) { 
               list.remove("three"); 
           } 
       } 
       System.out.println(list); 
   } 
 
   public static void main(String[] args) { 
       List<String> list = new CopyOnWriteArrayList<String>(); 
 
       list.add("one"); 
       list.add("two"); 
       list.add("three"); 
       list.add("four"); 
 
       removeAndPrint(list); 
 
   } 
} 
Ваши ответы
[one, three, four]
Объяснение:

CopyOnWriteArrayList - это разновидность List нормально переносит вызов метода remove() при перемещении по списку, не выдавая исключения ConcurrentModificationException.