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

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

+17

  • Кто проходил: Андрей1
  • Дата прохождения: 30.11.2018
Что выведется на консоль в результате выполнения кода:
public class B { 
   public static void main(String[] args) { 
       byte b = 127; 
       byte result = (byte)(b + 1); 
       System.out.println(result); 
   } 
} 
Ваши ответы
-128
Объяснение:

Переменая типа byte занимает 8 бит, 127 кодируется как 01111111 (0 – знаковый бит) после прибавления 1 получим число кодируемое как 10000000 – что соответствует -128

Что напечатает следующий код:
01: public class MainClass { 
02:   public static void main(String[] arg) { 
03:     int limit = 10; 
04:     int sum = 0; 
05:  
06:     int i = 1; 
07:     for (; i <= limit;) { 
08:       sum += i++; 
09:     } 
10:     System.out.println(sum); 
11:   } 
12: } 
Ваши ответы
55
Даны два примера кода. Что произойдёт при их исполнении. Пример №1:
public class Main { 
   public static void main(String[] args) { 
       new Thread(){ 
           { this.setDaemon(true); } 
 
           public void run() { 
               while(true) { 
                   System.out.println("Thread is running!"); 
               } 
           } 
       }.start(); 
   } 
} 
 
Пример №2:
public class Main { 
   public static void main(String[] args) { 
       new Thread() { 
 
           public void run() { 
               while(true) { 
                   System.out.println("Thread is running!"); 
               } 
           } 
       }.start(); 
   } 
} 
Ваши ответы
Поток создаваемый в примере №1 закончит свою работу с окончанием работы основного потока приложения. Поток создаваемый в примере №2 вызовет зацикливание.
Объяснение:

В примере №1 создаваемый поток имеет тип Daemon, это означает что он будет остановлен как только завершатся все пользовательские потоки приложения. В примере №2 поток не является "демоном" и будет выполняться до тех пор, пока не завершится его метод run(). А конструкция while(true) в методе run() приведёт к его зацикливанию.

Каким будет результат выполнения кода:
package tests; 
 
import java.util.Hashtable; 
 
public class Test { 
 public static void main(String[] args) { 
   Hashtable ht = new Hashtable(); 
   ht.put("1", "2"); 
   ht.put("2", "3"); 
   ht.put("3", "4"); 
   ht.put("4", "2"); 
 
   if(ht.contains("1")){ 
     System.out.print("1"); 
   } 
   if(ht.contains("2")){ 
     System.out.print("2"); 
   } 
   if(ht.contains("3")){ 
     System.out.print("3"); 
   } 
   if(ht.contains("4")){ 
     System.out.print("4"); 
   } 
 } 
}
Ваши ответы
Ничего из вышеперечисленного
Объяснение:

На экран выведется 234, так как метод contains в классе Hashtable проверяет наличие значений в списке values, а не keys.

Что будет напечатано в результате выполнения данного кода?
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

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

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

Что будет выведено на экран следующим кодом?
public class test { 
   public static void main(int[] args){ 
       System.out.println("Hi, World!"); 
   } 
 
   public static void main(String... args){  
       System.out.println("Hello, World!"); 
   } 
} 
Ваши ответы
Ошибка компиляции
Какой результат выполнения программы?
public class B { 
   public static void main(String[] args) { 
       big_loop: 
       for (int i = 0; i < 3 ; i++) { 
           try { 
               for (int j = 0; j < 3 ; j++) { 
                   if (i == j) continue; 
                   else if (i > j) continue big_loop; 
                   System.out.print("A"); 
               } 
           } finally { 
               System.out.print("B"); 
           } 
           System.out.print("C"); 
       } 
   } 
} 
Ваши ответы
ABCABCABC
Какой результат выполнения данного кода:
Integer i1 = 10; 
Integer i2 = 10; 
 
Double d1 = 10d; 
Double d2 = 10d; 
 
System.out.println(i1 == i2); 
System.out.println(d1 == d2); 
Ваши ответы
false
true
Что выведет следующий код?
int i = 0; 
i++; 
System.out.print(i); 
i = i++; 
System.out.println(i); 
Ваши ответы
12
Объяснение:

Результат выражения i++ при i=1 будет все равно 1, так как это постфиксный оператор. После выполнения постфиксного оператора, значение i станет равным 2, но i пере запишется единицей в результате выполнения оператора присваивания i = i++

Какой результат компиляции и выполнения программы:
import java.text.NumberFormat; 
 
class Main { 
   public static void main(String[] args) { 
       float f = 123.45678f; 
       NumberFormat numberFormat = NumberFormat.getInstance(); 
       numberFormat.setMaximumFractionDigits(2); 
       System.out.println(numberFormat.format(f)); 
   } 
}
Ваши ответы
Ошибка компиляции
Какой результат будет получен при компиляции и выполнении данного кода:
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 
   }     
} 
Ваши ответы
b1=false
b2=false
i=1
Какой результат выполнения программы:
import static java.lang.Math.*; 
 
public class StartClass { 
   public static void main(String[] args) { 
       System.out.println(max(1, 2));  
   } 
} 
Ваши ответы
Ошибка компиляции
Объяснение:

import static импортирует не только классы, но и их статические поля и методы

Что произойдет в результате компиляции и выполнения программы:
public class Main {     
   public static void main(String[] args) { 
       String strA = "text"; 
       String strB = "text"; 
       strA += "1"; 
       strB += "1"; 
       System.out.println(strA != strB); 
       strA = "text1"; 
       strB = "text1"; 
       System.out.println(strA != strB); 
   } 
}
Ваши ответы
false
false
Объяснение:

Во-первых, нужно помнить, что строковые литералы в Java - это, фактически, объекты (String). При этом, если в программе несколько раз встречается один и тот же строковый литерал, то ему будет соответствовать один и тот же объект. Поэтому во втором случае strA == strB (и, соответственно, выводится false). Во-вторых, нужно помнить, что строки (String) в Java - это неизменяемые объекты. Поэтому, когда к объекту strA "приклеивается" другая строка (strA += "1"), на самом деле создаётся новый объект, содержащий "text1". И когда приклеиваем к объекту strB - создаётся ещё один (другой!) объект, также содержащий "text1". Следовательно, strA != strB, и в первом случае выводится true. Фактически, команда strA += "1" разворачивается в strA = new StringBuilder().append(strA).append("1").toString(); И если это выполнится два раза, то получится два разных объекта, пусть и с одинаковым содержимым.

Какой результат выполнения следующего кода:
public class MainClass { 
   public static void main(String args[]){ 
       System.out.println((-(byte)128)>>>1 == 128 >>> 1); 
   } 
} 
Ваши ответы
false
Объяснение:

Число 128 имеет двоичное представление 00000000 00000000 00000000 10000000. После преобразования в byte получается 10000000 – но в типе byte это двоичное представление соответствует числу –128. –(–128) даёт 128, а 128>>>1 разумеется будет равно 128>>>1.