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

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

+24

Что будет выведено на консоль?
public class StringTest { 
   public static void main(String[] args) { 
       int result = 12 + 2 * 5 % 3 - 15 / 4; 
       String x = 12 - 6 + "Hello" + 7 + 5; 
 
       System.out.println(result + " - " + x); 
   } 
}
Ваши ответы
10 - 6Hello75
Что будет выведено, если скомпилировать и запустить следующий код:
public class Main { 
   public static void puzzle2x2(){ 
       System.out.println("2 + 2 = " + 2 + 2); 
   } 
   public static void main(String args[]) { 
       Main.puzzle2x2(); 
   } 
} 
Ваши ответы
2 + 2 = 22
Объяснение:

Действия выполняются по порядку слева направо. Из-за того, что первым операндом является строка, осуществляется конкатенация (склеивание) строк.
Чтобы получить математически корректный пример, можно изменить порядок действий с помощью скобок:

После выполнения каких строк будет выведен 0, еcли i = 0?
Ваши ответы
System.out.println(i);
Объяснение:

Результатом постфиксных операций i++ и i-- будет исходное значение переменной i.
Результатом выражения i + '0' будет число 48 - код символа '0'.

Что будет напечатано в результате выполнения следующего кода:
public class Exceptions { 
   public static void main(String[] args) { 
       try { 
           throw new UnsupportedOperationException(); 
       } catch(Throwable t) { 
           System.out.print("1"); 
       } catch(Exception e) { 
           System.out.print("2"); 
       } catch(UnsupportedOperationException uoe) { 
           System.out.print("3"); 
       } 
   } 
} 
Ваши ответы
Код не скомпилируется
Объяснение:

Код не скомпилируется. Все исключения в java наследуются от Throwable. В нескольких блоках catch обработка исключений должна идти вверх по иерархии исключений (в данном случае от более конкретного - UnsupportedOperationException до более общего - Throwable, но не наоборот).

Дан код, сколько раз выполнится строка 3?
1.    int x = 10; 
2.    do { 
3.        x--; 
4.    } while(x < 10); 
Ваши ответы
от одного до десяти раз
Объяснение:

В данном примере в условие попадёт уже новое значение 9, а затем будет 8, 7 и т.д. до -2147483648. После этого при декременте x перейдёт через границу диапазона и станет равным 2147483647, отчего цикл прекратится.

Каким будет результат компиляции и выполнения следующего кода?
public class Test { 
   static String s; 
 
   static void go() { 
       System.out.println(s); 
       go(); 
   } 
 
   public static void main(String[] args) { 
       go(); 
   } 
} 
Ваши ответы
Программа будет бесконечно выводить в консоль следующие строки:
null
null
null
...
Объяснение:

При бесконечной рекурсии рано или поздно стек вызова методов переполнится и будет сгенерировано соответствующее исключение.

Какие из перечисленных идентификаторов являются корректными?
Ваши ответы
int
Каков результат выполнения этой программы:
public class Test { 
   public static void main(String[] args){ 
       System.out.println(010>9); 
   } 
}
Ваши ответы
true
Объяснение:

Ведущий 0 означает, что число записано в восьмеричной системе счисления. 010 = 8

Какой результат работы программы?
public class Test { 
   public static void main(String[] args) { 
       Integer i1 = 1000; 
       Integer i2 = 1000; 
       System.out.println(i1 == i2); 
       System.out.println(i1 == 1000); 
   } 
} 
Ваши ответы
true
true
Выберите из приведенных все модификаторы, которые применимы для top-level классов (не вложенных).
Ваши ответы
private
protected
public
Объяснение:

Модификаторы private и protected применимы только к вложенным классам-членам (member class), модификатор transient – только к полям

Каким будет результат выполнения следующей программы?
import java.util.*; 
public class TestFormatter {         
   public static void main(String... args){ 
       Integer I1 = 0; 
       Integer I2 = -1; 
       Integer I3 = 1; 
       Formatter f = new Formatter(); 
       f.format("%1$b ", I1.toString()) 
        .format("%1$b ", I2.toString()) 
        .format("%1$b ", I3.toString()); 
       System.out.println(f.toString());         
   } 
} 
Ваши ответы
0 -1 1
Объяснение:

Последовательность %b используется для вывода логического значения. Соответствующий аргумент обрабатывается следующим образом: - если передаётся булево значение, то результатом будет его строковое представление ("true" или "false"); - если передаётся null, то результатом будет "false"; - во всех остальных случаях (как и в данном примере) результатом будет "true".

В каких строках кода возникнет ошибка компиляции:
class MyException1 extends Exception { }             // 1 
class MyException2 extends RuntimeException { }      // 2 
class A { 
   void m1() { throw new MyException1(); }          // 3 
   void m2() { throw new MyException2(); }          // 4 
} 
Ваши ответы
Код компилируется без ошибок
Объяснение:

Исключение MyException1 является checked, поэтому нуждается в обработке методом m1().

Какие строки не вызовут ошибок компиляции?
Ваши ответы
char c = -1;
char b = 10;
Что будет напечатано следующим кодом?
public class Main { 
 
   private static class A1 { 
       private String test() { 
           return "A1"; 
       } 
   } 
 
   public static class A2 extends A1 { 
       public String test() { 
           return "A2"; 
       } 
   } 
 
   public static class A3 extends A2 { 
       public String test() { 
           return "A3"; 
       } 
   } 
 
   public static void main(String ... arg) { 
       A1 a1 = new A1(); 
       System.out.println(a1.test()); 
       a1 = new A2(); 
       System.out.println(a1.test()); 
       a1 = new A3(); 
       System.out.println(a1.test()); 
   } 
 
} 
Ваши ответы
A1
A2
A3
Объяснение:

Private-методы не наследуются, их нельзя перекрыть (override) в классах-потомках, для них не используется механизм позднего связывания. Поэтому всегда будет вызываться метод test() из класса A1 — исходя из типа переменной-ссылки, а не фактического типа объекта.

Какой результат выполнения данного кода:
String data[]; 
data = {"one", "two", "three"}; 
System.out.println(data[1]); 
Ваши ответы
two
Объяснение:

Список инициализации разрешается использовать или при объявлении массива: String data[] = {"one", "two", "three"}; или при создании массива с помощью оператора new: data = new String[] {"one", "two", "three"};