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

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

+114

  • Кто проходил: Андрей1
  • Дата прохождения: 08.02.2019
Что будет, если единственный конструктор объекта объявлен как final?
Ваши ответы
Конструктор не может быть объявлен как final
Объяснение:

Единственные модификаторы, разрешенные для конструкторов: public, protected, private.

Что будет выведено в консоль?
class A 
{ 
   { 
       System.out.print("5"); 
   } 
 
   static { 
       System.out.print("3"); 
   } 
 
   public A() { 
       System.out.print("4"); 
   } 
} 
 
public class B extends A { 
   { 
       System.out.print("2"); 
   } 
 
   static { 
       System.out.print("6"); 
   } 
 
   public B() { 
       System.out.print("1"); 
   } 
 
   public static void main(String[] args) { 
       new B(); 
   } 
} 
Ваши ответы
365421
Какие из следующих методов выбрасывают исключение InterruptedException?
Ваши ответы
sleep
Что выведет в консоль следующий код?
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, two, four]
Объяснение:

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

Что попадет в стандартный поток вывода, если метод tryThis() выбросит IOException?
try { 
   tryThis(); 
   return; 
} catch (IOException x1) { 
   System.out.println("exception 1"); 
   return; 
} catch (Exception x2) { 
   System.out.println("exception 2"); 
   return; 
} finally { 
   System.out.println("finally"); 
} 
Ваши ответы
exception 1 и finally
Что будет выведено в результате компиляции и запуска:
public class Quest { 
   public static void main() { 
       System.out.print("А"); 
  } 
   public static void main(String args) { 
       System.out.print("Б"); 
   } 
   public static void main(String[] args) { 
       System.out.print("В"); 
   } 
} 
Ваши ответы
В
Объяснение:

Методы main() являются корректно перегруженными, поэтому никаких ошибок не произойдет, а будет вызван только метод, запускающий приложение.

Что выведется в консоль в результате компиляции и выполнения следующего кода:
public class A { 
   { 
       System.out.println("one"); 
   } 
 
   public static void main(String[] args) { 
       System.out.println("two"); 
   } 
 
   static { 
       System.out.println("three"); 
   } 
} 
Ваши ответы
three
two
Объяснение:

Статические блоки инициализации выполняются перед первым обращением к классу, т.е. перед вызовом метода main(). Поэтому сначала будет выведена строка "three", а затем "two".
Обычные блоки инициализации выполняются при создании экземпляра заданного класса, но в данном примере этого нет. Поэтому строка "one" выведена не будет.

Выберите все верные варианты объявления метода main (java 5 и выше).
Ваши ответы
public static void main(String args[])
{...}
public static void main(String ... args)
{...}
public static void main(String[] args)
{...}
Объяснение:

Так как с 5 Java появился оператор ... то public static void main(String ... args) {...} также будет правильным вариантом.

Что будет выведено на экран в результате выполнения программы ?
public class Main { 
   public static void main(String[] args) { 
       Formatter formatter = new Formatter(Locale.ROOT); 
       formatter.format("%.2E\n", 100.0/3.0);      //1 
       formatter.format("%.2f", 100.0/3.0);        //2 
       System.out.println(formatter); 
   } 
} 
Ваши ответы
3.33E+01
33.33
Объяснение:

Formatter - форматирующий класс в Java. Результатом выполнения строки 1 будет 3.33E+01, т.к. ".2" округляет выражение до 2-го знака после запятой, а Е преобразует выражение в инженерный вид.
Результатом выполнения строки 2 будет 33.33, здесь также выполняется округление до 2-го знака после запятой.
Без явного указания Locale мы бы получили результат в соответствии с тем, какой разделитель дробной и целой части установлен в системе. Так, например, в русской версии Windows мы бы получили 33,33.

Что произойдет при компиляции и запуске данного кода?
abstract public class Parent { 
   String s = "hello!"; 
   public void test() { 
       System.out.println(s); 
   } 
} 
 
class P { 
   public static void main(String[] args) { 
       Parent p = new Parent(); 
       p.test(); 
   } 
} 
Ваши ответы
Возникнет ошибка компиляции
Объяснение:

Нельзя создавать экземпляры абстрактного класса используя оператор new, так как он не определен полностью

Какой будет результат компиляции и выполнения данной программы?
public class Test { 
   private static class Test2 { 
       private static final String name = "Name"; 
   } 
 
   public static void main(String[] args) { 
       System.out.println(Test2.name); 
   } 
} 
Ваши ответы
Каким будет результат?
public class Main { 
   public static void main(String[] args) { 
       byte b = 12; 
       byte k = b + 1; 
       System.out.println(k); 
   } 
} 
Ваши ответы
13
Объяснение:

При выполнении арифметических действий со значениями типа byte, char, short, они неявно приводятся к типу int. Поэтому результат выражения b+1 также будет иметь тип int. Чтобы его можно было присвоить переменной k, нужно использовать явное приведение типа: byte k = (byte)(b + 1);

Что такое JRE?
Ваши ответы
JRE - это часть JVM необходимая для преобразования байткода в специфические для операционной системы вызовы.
Объяснение:

JRE (java runtime environment) - это часть JDK (java development kit) необходимая для запуска java-приложений. JRE включает в себя JVM, библиотечные классы и исполняемые файлы, специфичные для конкретной ОС

Что будет выведено на экран следующим кодом:?
class Outer { 
  int outer_x = 100; 
  void test() { 
      for(int i = 0; i < 5; i ++) { 
          class Inner{ 
              void display() { 
                  System.out.print("outer_x = " + outer_x + "; "); 
              } 
          } 
          Inner inner = new Inner(); 
          inner.display(); 
      } 
  } 
} 
public class InnerClassDemo { 
    public static void main(String args[]) { 
        Outer outer = new Outer(); 
        outer.test(); 
    } 
} 
Ваши ответы
Ошибка компиляции
Каким будет результат компиляции и запуска следующей программы?
public class SleepMain { 
   public static void main(String... args) { 
       Thread t = new MyThread(); 
       for (int i = 1; i <= 5; i++) { 
           System.out.print(i + " "); 
           try { 
               t.sleep(1000); 
           } catch (InterruptedException e) { 
               System.out.println("Interrupted in main"); 
           } 
       } 
   } 
 
   static class MyThread extends Thread { 
       public void run() { 
           for (int i = 1; i <= 5; i++) { 
               System.out.print(i + " "); 
               try { 
                   Thread.sleep(1000); 
               } catch (InterruptedException e) { 
                   System.out.println("Interrupted in myThread"); 
               } 
           } 
       } 
   } 
} 
Ваши ответы
1 1 2 2 3 3 4 4 5 5
Объяснение:

Для запуска второго потока надо было вызвать метод t.start(). Без этого работает только исходный поток. Метод sleep() класса Thread статический, потому по команде t.sleep() будет засыпать текущий поток, т.е. main.