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

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

+100

  • Кто проходил: ilya201177
  • Дата прохождения: 05.12.2018
Что произойдет во время компиляции и выполнения данного кода?
class MyThread extends Thread { 
   public void run() { 
       System.out.print("Running "); 
   } 
   public void start() { 
       System.out.print("Starting "); 
   } 
} 
 
public class Q202 { 
   public static void main(String[] args) { 
       MyThread t = new MyThread(); 
       t.start(); 
   } 
} 
Ваши ответы
Будет выведено "Starting"
Объяснение:

При запуске потока методом start() вызывается метод run() этого потока. Поскольку метод start() переопределен, а явного вызова метода run() не было, то ничего больше выполняться не будет.

Какой результат выполнения следующего кода:
class A { 
   public void m(Number n) { 
       n = 5 / 3; 
       System.out.println("class A, method m : " + n); 
   } 
} 
 
class B extends A { 
   public void m(Double d) { 
       d = d / 3; 
       System.out.println("class B, method m : " + d); 
   } 
} 
 
public class MainClass { 
   public static void main(String args[]) { 
       A a = new B(); 
       a.m(5.0); 
   } 
} 
Ваши ответы
class A, method m : 1
Скомпилируется ли следующий пример:
public class StartClass {     
   private final String DUMMY = "DUMMY"; 
 
   public static void main(String[] args) { 
       System.out.println(DUMMY); 
   } 
} 
Ваши ответы
нет
Объяснение:

Из статического контекста нельзя обращаться к нестатическому.

Определена следующая переменная строкового типа.
String s = "abc"; 
 
Какие из перечисленных ниже операций допустимы?
Ваши ответы
s += s + s; 
Объяснение:

Строковое преобразование (String conversion) в языке Java осуществляется неявно и только в одном случае: при конкатенации (склеивании) строки и не-строки.
Например, допустимой будет такая конструкция:
s = "" + (46 >> 2); // пустая строка + число
В этом случае число будет неявно преобразовано в строку.

Какой результат выполнение данного кода?
import java.util.Arrays; 
 
class Generic<T extends Number> {  
   private T arr[] = {1, 2, 3, 4, 5}; 
 
   public String toString(){  
       return Arrays.toString(arr); 
   }  
}  
 
public class Test {  
   public static void main(String [] args) {  
       Generic<Double> obj = new Generic<Double>(); 
       System.out.println(obj);  
   }  
} 
Ваши ответы
Ошибка компиляции
Объяснение:

Ошибка компиляции при объявлении массива.
Списки инициализации не могут быть использованы для инициализации параметризованных массивов.

Можно ли при объявлении класса использовать модификаторы abstract и final одновременно?
Ваши ответы
Нет
Объяснение:

Эти два модификатора являются взаимоисключающими:
– abstract используется, чтобы показать, что класс имеет неполную реализацию, или его следует рассматривать таковым;
– final применяется к полностью реализованным классам, для которых не нужны (нежелательны) подклассы, чтобы обеспечить надёжность и/или производительность.

Можно ли динамически менять размер массива?
Ваши ответы
Нет, нельзя
Объяснение:

Размер массива определяется при его создании и в дальнейшем не может изменяться.

Что будет выведено на экран следующим кодом:?
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(); 
    } 
} 
Ваши ответы
outer_x = 100; outer_x = 100; outer_x = 100; outer_x = 100; outer_x = 100;
Класс Dog создан в пакете animals, а класс Peter - в пакете humans. Выберите все подходящие варианты описания конструкции import, чтобы класс Peter мог создавать и использовать объекты класса Dog?
Ваши ответы
import animals.Dog;
import animals.*;
Объяснение:

Для этого используется конструкция import package.class, где class может быть как конкретным классом, так и символом *.

Что будет напечатано в результате выполнения?
public class Test { 
   public static void main(String[] s) { 
       for (int i = 2; i < 10; i = (i++) + i--, i++) { 
           System.out.print(--i); 
       } 
   } 
} 
Ваши ответы
137
Объяснение:

В этом примере переменная цикла i изменяется в трёх выражениях:
1. «System.out.println(--i)» – переменная i уменьшается на единицу. Поскольку используется префиксная форма оператора --, то на экран выводится новое (уменьшенное) значение.
2. «i = (i++) + i--» – переменная i увеличивается на единицу, затем уменьшается на единицу, затем вычисляется сумма, значение которой присваивается всё той же i.
Поскольку используется постфиксная форма операторов ++/--, то при вычислении суммы используются значения, которые были у i до увеличения / уменьшения. Получается, что это действие эквивалентно следующему: «i = i + (i + 1)»
3. «i++» – переменная i увеличивается на единицу.
Значения переменной i на каждой итерации цикла:
2 → 1 → 3 → 4
4 → 3 → 7 → 8
8 → 7 → 15 → 16

Что выведется в консоль в результате компиляции и выполнения следующего кода:
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" выведена не будет.

Что напечатается в результате компиляции и выполнения следующего кода?
public class Test { 
   private static Boolean b1, b2; 
 
   public static void main (String[] args) { 
       if (b1 || !b2 || !b1 || b2) { 
           System.out.println(true); 
       } 
       else { 
           System.out.println(false); 
       } 
   } 
} 
Ваши ответы
Произойдет ошибка выполнения
Объяснение:

При использовании объектов-обёрток в операциях, предназначенных для примитивов, вызываются методы, возвращающие примитивное значение. В данном случае booleanValue(). Это вызовет выбрасывание NullPointerException.

Каким образом можно выделить большее максимальное количество памяти для Java Virtual Machine.
Ваши ответы
Необходимо запустить JVM с ключом -Xmx и соответствующим значением количества памяти. Например -Xmx256m.
Объяснение:

Для выделения нужного количества памяти, необходимо запускать JVM с определёнными ключами. Так например ключ -Xmx задаёт максимальное количество памяти, а -Xms начальное количество памяти.

Каким будет результат компиляции и выполнения следующего кода:
import java.util.List; 
import java.util.ArrayList; 
 
public class Test { 
   public static void main(String[] args) { 
       List<String> values = new ArrayList<String>() { 
           { 
             add("one"); 
             add("two"); 
             add("three"); 
           } 
       }; 
       System.out.print("values: ");    
       for (String value : values) { 
           System.out.print(value + " "); 
       } 
   } 
} 
Ваши ответы
values: one two three
Объяснение:

Анонимный класс наследуется от ArrayList, вызывается конструктор ArrayList, вызывается инициализатор анонимного класса, вызывается конструктор анонимного класса

Какой результат выполнения следующего кода:
public class MainClass { 
   public static void main(String args[]) { 
       int k = 2; 
       int m = 10; 
       int s =  1 >> k++ + ++m - --k - m-- << 1; 
       System.out.println("s = " + s); 
       System.out.println("k = " + k); 
       System.out.println("m = " + m); 
   } 
} 
Ваши ответы
s = 2
k = 2
m = 10