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

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

+62

  • Кто проходил: Андрей1
  • Дата прохождения: 29.11.2018
Скомпилируется ли следующий код, если оба класса будут объявлены в файле Test.java?
//Test.java 
public class Car{ 
   public String myCar = "Ferrari" ; 
} 
public class Test{ 
   public static void main(String ... args){ 
       Car myCar = new Car(); 
       System.out.println(myCar.myCar); 
   } 
} 
Ваши ответы
Нет
Объяснение:

Код не скомпилируется из-за класса Car. Только один из классов в файле может быть объявлен как public.

Как можно уничтожить объект в Java?
Ваши ответы
этого нельзя сделать вручную
Объяснение:

Этого нельзя сделать вручную. Только Garbage Collector может уничтожить объект. Если всем ссылкам на объект присвоить null, то сам объект станет доступным для сборщика мусора

Что будет напечатано на экран следующим кодом:
class Main { 
   public static void main(String[] args) { 
       int i = 0; 
       System.out.println(++i == i++); 
       System.out.println(i++ == i++); 
   } 
} 
Ваши ответы
true
false
Что напечатает следующий код?
public class Test { 
 
   private String name; 
 
   Test(String name) { 
       this.name =  name; 
   } 
 
   public void test(final Test test) {         
       test = new Test("three"); 
   } 
 
   public String toString() { 
       return name; 
   } 
 
   public static void main(String[] args) { 
       Test t1 = new Test("one"); 
       Test t2 = new Test("two"); 
       t1.test(t2); 
       System.out.println(t2); 
   } 
 
} 
Ваши ответы
Ошибка компиляции
Объяснение:

final параметр в методе test, говорит о том что ссылка на объект test не может быть изменена, поэтому строка test = new Test("three") приведёт к ошибке на этапе компиляции.

Что произойдет в результате компиляции и запуска следующего кода:
public class Bar extends Foo {               // 1 
   public static void main(String[] args) { // 2 
       System.out.print(sum(1, 2));         // 3 
   } 
} 
class Foo { 
   int sum(int x, int y) { 
       return x + y; 
   } 
} 
Ваши ответы
Ошибка компиляции в строке 3
Объяснение:

Ошибка компиляции в строке 3, так как нельзя вызывать нестатический метод из статического контекста

Что будет напечатано в результате выполнения данного кода?
import java.util.Arrays; 
class ArraysComparing { 
   public static void main(String...args) { 
       int[] i1[] = {{1,2,3}, {0,0,0}}; 
       int[][] i2 = {{1,2,3}, {0,0,0,}}; 
       int[][] i3 = new int[2][3]; 
       System.arraycopy(i1, 0, i3, 0, i3.length); 
       System.out.println(Arrays.equals(i1, i2)); 
       System.out.println(Arrays.equals(i1, i3)); 
       System.out.println(Arrays.deepEquals(i1, i2)); 
   } 
} 
Ваши ответы
false
true
true
Объяснение:

В массивах i1 и i2 ссылки на вложенные массивы разные, поэтому первый equals вернет false.
Во втором случае ссылки будут одинаковыми, соответственно true.
В третьем случае производится сравнение элементов, все одинаковы, поэтому true

Что напечатает следующий код:
public class A { 
 private int a;  //--1-- 
 
 public short getB() { 
   short b;  //--2-- 
   return b;  //--3-- 
 } 
 
 public static void main(String[] args) { 
   System.out.print(new A().a);  //--4-- 
   System.out.println(new A().getB());  //--5-- 
 } 
}
Ваши ответы
ошибка компиляции в строке 3
Объяснение:

В строке 3 произойдёт ошибка компиляции из-за использования непроинициализированной локальной переменной b.
В строке 4 такой ошибки не будет, поскольку поле класса по умолчанию инициализируется нулём.

Какие модификаторы позволяют обращаться к полю/методу публичного класса верхнего уровня из других классов верхнего уровня, находящихся в том же пакете?
Ваши ответы
public
Что будет напечатано в результате выполнения данного кода?
public class Cycle { 
   public static void main(String...args) { 
       int i = 1; 
       do while(i < 1) 
           System.out.println("i = " + ++i); 
       while (i > 1); 
   } 
} 
Ваши ответы
i = 2
Объяснение:

Пониманию исходного кода мешает отстутствие фигурных скобок. Расставим их:

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

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

Укажите все утверждения, которые верны относительно следующего фрагмента кода:
public class TestClazz { 
   public static void main(String[] args) { 
       final long Byte = 0;            // 1 
       if ( Byte.equals(0) ) {        // 2 
           System.out.print("=="); 
       } else { 
           System.out.print("!="); 
       } 
   } 
} 
Ваши ответы
Возникнет ошибка компиляции в строке 1
Объяснение:

long Byte - объявляется переменная с именем Byte и типом long. У примитивов нет метода equals.

Дан следующий код:
interface I_A { public void out1(); } 
interface I_B { public void out2(); } 
 
class Impl implements I_A, I_B {     //1 
   public void out2() { 
       System.out.print("2"); 
   } 
   public void out1() { 
       System.out.print("1"); 
   } 
} 
 
public class Test { 
   public static void main(String[] args) { 
       Impl impl = new Impl(); 
       I_A a; 
       a = impl; 
       a.out1(); 
       ((I_B) a).out2();              //2 
   } 
} 
Каков результат выполнения этой программы ?
Ваши ответы
Ошибка компиляции в строке (2)
Объяснение:

В Java возможна реализация нескольких интерфейсов. Данное приведение типов возможно, так как класс impl реализует оба интерфейса.

Каково будет значение переменной count после выполнения данного кода?
int count = 1, i = 0; 
do { 
   count *= ++i; 
   if (count > 5) break; 
} while (i <= 4); 
Ваши ответы
1
Какой результат выполнения программы:
class Main { 
   public static void main(String[] args) { 
       Integer i = new Integer("10"); 
       if (i.toString() == i.toString()) { 
           System.out.println("Равный"); 
       } else { 
           System.out.println("Неравный"); 
       } 
   } 
} 
Ваши ответы
Выведется "Равный"
Объяснение:

Метод toString() возвращает эквивалент String этого объекта String. Каждый раз, когда он вызывается, создаётся новый объект. Оператор == сравнивает две ссылки на объект, а не реальное содержимое String. Таким образом, сравнение возвращает false, выполняется оператор else, и выводится "Неравный".

Что будет выведено на экран?
class ClassA { 
   int x = 1; 
 
   public void printX() { 
       System.out.println(getX()); 
   } 
 
   public int getX() { 
       return x; 
   } 
} 
 
class ClassB extends ClassA { 
   int x = 2; 
 
   public int getX() { 
       return x + 1; 
   } 
} 
 
public class Test { 
   public static void main(String[] args) { 
       ClassA a = new ClassB(); 
       System.out.println(a.x); 
   } 
} 
Ваши ответы
3
Объяснение:

Правильный ответ 1. Поскольку тип переменной является класс ClassA, то переменные этого класса перекрывают переменные класса ClassB при вызове этой переменной через ссылку с типом ClassA