Главная / Программирование /
Программирование на Java / Тест 7
Программирование на Java - тест 7
Упражнение 1:
Номер 1
Укажите количество преобразований, которые будут сделаны в следующем коде:
long a = 3;
a = 5 + 'A' + a;
Ответ:
 (1) 0
 
 (2) 1
 
 (3) 2
 
 (4) 3
 
 (5) 4
 
Номер 2
Укажите количество преобразований, которые будут сделаны в следующем коде:
long a = 3;
a = 5 + 'A' + a;
System.out.print("a = " + a);
Ответ:
 (1) 1
 
 (2) 2
 
 (3) 3
 
 (4) 4
 
Номер 3
Укажите количество преобразований, которые будут сделаны в следующем коде:
long a = 3;
a = 5 + a;
System.out.print("a = " + a);
Ответ:
 (1) 1
 
 (2) 2
 
 (3) 3
 
 (4) 4
 
 (5) 5
 
Упражнение 2:
Номер 1
Какие утверждения относительно преобразования примитивных типов верны?
Ответ:
 (1) расширение - это переход от менее емкого типа к более емкому 
 (2) расширение является небезопасным преобразованием 
 (3) тип boolean
можно привести к типу byte
 
 (4) тип byte
можно привести к типу int
без потери данных 
 (5) тип byte
можно привести к типу char
без потери данных 
Номер 2
Какие утверждения относительно преобразования примитивных типов верны?
Ответ:
 (1) сужение - это переход от менее емкого типа к более емкому 
 (2) преобразование от типа char
к типу byte
является сужающим 
 (3) при сужении целочисленного типа к более узкому целочисленному все старшие биты, не попадающие в новый тип, просто отбрасываются 
 (4) тип byte
можно привести к типу int
без потери данных 
 (5) компилятор может осуществить сужающее преобразование самостоятельно 
Номер 3
Какие варианты кода будут выполнены без ошибок?
Ответ:
 (1)
int a = b;
boolean c = (boolean)a;
 
 (2)
byte b = 3;
int a = b;
 
 (3)
int a = 2;
byte c = a;
 
 (4)
int a = 2;
float c = (float)a;
 
Упражнение 3:
Номер 1
Будет ли скомпилирован следующий пример:
byte b = 100 - 100;
b = 100 + 200;
b = 100 * 100;
Ответ:
 (1) пример не будет скомпилирован, будет выдано сообщение об ошибках в 1-й и 2-й строках 
 (2) пример не будет скомпилирован, будет выдано сообщение об ошибках во 2-й и 3-й строках 
 (3) пример не будет скомпилирован, будет выдано сообщение об ошибках в 1-й и 3-й строках 
 (4) пример не будет скомпилирован, будет выдано сообщение об ошибках в 1-й, 2-й и 3-й строках 
 (5) пример будет скомпилирован 
Номер 2
Укажите результат выполнения следующего кода?
long a = 111111111111L;
double f = a;
long b = 11111L;
double d = b;
System.out.println( a == (long) f);
System.out.println( b == (long) d);
Ответ:
 (1)
true
true
 
 (2)
true
false
 
 (3)
false
true
 
 (4)
false
false
 
 (5) будет выведено сообщение об ошибке 
Номер 3
Укажите результат выполнения следующего кода?
long a = 111111111111L;
float f = a;
long b = 11111L;
float d = b;
System.out.println( a == (long) f);
System.out.println( b == (long) d);
Ответ:
 (1)
true
true
 
 (2)
true
false
 
 (3)
false
true
 
 (4)
false
false
 
 (5) будет выведено сообщение об ошибке 
Упражнение 4:
Номер 1
Какие утверждения относительно преобразования ссылочных типов верны?
Ответ:
 (1) преобразование от null
-типа к любому объектному типу является расширяющим 
 (2) преобразование от класса A
к классу B
, если A
наследуется от B
является сужающим 
 (3) можно преобразовать ссылку одного типа к ссылке другого типа даже если они не являются родителем и наследником 
 (4) всегда можно обращаться к объекту, порожденному от наследника, по типу его родителя 
Номер 2
Какие преобразования не вызовут ошибку компиляции?
Ответ:
 (1)
Object o = (String)null;
String s = o;
 
 (2)
Object o = (String)null;
String s = (String)o;
 
 (3)
Object o = null;
String s = (String)o;
 
 (4)
Object o = null;
String s = o;
 
Номер 3
Какие значения могут участвовать в преобразовании к строке?
Ответ:
 (1) выражения примитивного типа 
 (2) выражения ссылочного типа 
 (3) значение null
 
Упражнение 5:
Номер 1
Пусть классы Wolf
и Rabbit
являются наследниками классаAnimal
. Корректен ли следующий пример?
Wolf w = new Wolf();
Animal a = (Animal)w;
Rabbit r = (Rabbit)a;
Ответ:
 (1) пример не будет откомпилирован, ошибка в первой строке 
 (2) пример не будет откомпилирован, ошибка во второй строке 
 (3) пример будет откомпилирован, но возникнет ошибка времени исполнения
 
 (4) пример полностью корректен 
Номер 2
Укажите результат выполнения следующего кода?
public class SomeClass {
public static void main(String[] args) {
SomeClass c = new SomeChild1();
((SomeClass)c).print();
((SomeChild1)c).print();
((SomeChild2)c).print();
}
public void print() {
System.out.println("SomeClass");
}
}
class SomeChild1 extends SomeClass {
public void print() {
System.out.println("SomeChild1");
}
}
class SomeChild2 extends SomeClass {
public void print() {
System.out.println("SomeChild2");
}
}
Ответ:
 (1)
SomeClass
SomeChild1
SomeChild2
 
 (2)
SomeClass
SomeClass
SomeClass
 
 (3)
SomeClass
и сообщение об ошибке 
 (4)
SomeChild1
SomeChild1
и сообщение об ошибке 
 (5)
SomeClass
SomeClass
и сообщение об ошибке 
Номер 3
Укажите результат выполнения следующего кода?
public class SomeClass {
public static void main(String[] args) {
SomeClass c = new SomeChild2();
((SomeClass)c).print();
((SomeChild1)c).print();
((SomeChild2)c).print();
}
public void print() {
System.out.println("SomeClass");
}
}
class SomeChild1 extends SomeClass {
public void print() {
System.out.println("SomeChild1");
}
}
class SomeChild2 extends SomeClass {
public void print() {
System.out.println("SomeChild2");
}
}
Ответ:
 (1)
SomeClass
SomeChild1
SomeChild2
 
 (2)
SomeClass
SomeClass
SomeClass
 
 (3)
SomeClass
и сообщение об ошибке 
 (4)
SomeChild1
и сообщение об ошибке 
 (5)
SomeChild2
и сообщение об ошибке 
Упражнение 6:
Номер 1
Какие из следующих присвоений корректны?
Ответ:
 (1)
SomeClass c = 1;
 
 (2)
Object o = 1;
 
 (3)
int i = 1;
 
 (4)
String s = 1;
 
 (5)
byte b = (byte) 1;
 
Номер 2
Какие из следующих присвоений корректны?
Ответ:
 (1)
short s = (short)(2 + 3);
 
 (2)
byte b2 = 200;
 
 (3)
byte c = (int)150 + 'a';
 
 (4)
char c = (byte)5 + 'a';
 
 (5)
byte c = (char)5 + 'a';
 
Номер 3
Какие из следующих присвоений корректны?
Ответ:
 (1)
byte c = (char)150;
 
 (2)
byte c = (char)50;
 
 (3)
byte c = 'a';
 
 (4)
byte c = (char)150 + "a";
 
 (5)
byte c = (long)50;
 
Упражнение 7:
Номер 1
Укажите результат выполнения следующего кода:
public class SomeClass {
public static void main(String[] args) {
SomeClass c = new SomeClass();
c.f1(1, 1);
}
public void f1(byte b, char c) {
System.out.println("1");
}
public void f1(byte b, byte c) {
System.out.println("2");
}
public void f1(char b, char c) {
System.out.println("3");
}
public void f1(char b, byte c) {
System.out.println("4");
}
}
Ответ:
 (1) 1
 
 (2) 2
 
 (3) 3
 
 (4) 4
 
 (5) возникнет ошибка компиляции 
Номер 2
Укажите результат выполнения следующего кода:
public class SomeClass {
public static void main(String[] args) {
SomeClass c = new SomeClass();
c.f1(1, 1);
}
public void f1(int b, long c) {
System.out.println("1");
}
public void f1(long b, int c) {
System.out.println("2");
}
public void f1(int b, int c) {
System.out.println("3");
}
public void f1(long b, long c) {
System.out.println("4");
}
}
Ответ:
 (1) 1
 
 (2) 2
 
 (3) 3
 
 (4) 4
 
 (5) возникнет ошибка компиляции 
Номер 3
Укажите результат выполнения следующего кода:
public class SomeClass {
public static void main(String[] args) {
SomeClass c = new SomeClass();
c.f1(1, 1);
}
public void f1(Integer i1, Integer i2) {
System.out.println("1");
}
public void f1(Integer i1, int i2) {
System.out.println("2");
}
public void f1(int b, Integer c) {
System.out.println("3");
}
public void f1(long b, long c) {
System.out.println("4");
}
}
Ответ:
 (1) 1
 
 (2) 2
 
 (3) 3
 
 (4) 4
 
 (5) возникнет ошибка компиляции 
Упражнение 8:
Номер 1
Значение какого типа будет хранить переменная b
после инициализации?
byte b = 1 + 2;
Ответ:
 (1) char
 
 (2) byte
 
 (3) short
 
 (4) int
 
Номер 2
На объект какого типа будет ссылаться переменная c
?
public class SomeClass {
public static void main(String[] args) {
SomeClass c = new SomeClass2();
}
}
class SomeClass2 extends SomeClass {}
Ответ:
 (1) Object
 
 (2) SomeClass
 
 (3) SomeClass2
 
 (4) пример не будет скомпилирован 
Номер 3
Укажите результат выполнения следующего кода:
public class SomeClass {
public static void main(String[] args) {
SomeClass c = new SomeClass2();
SomeClass2 c2 = new SomeClass2();
c2.print();
c.print();
}
}
class SomeClass2 extends SomeClass {
public void print() {
System.out.println("message");
}
}
Ответ:
 (1)
message
message
 
 (2)
message
и сообщение об ошибке 
 (3)
message
message
и сообщение об ошибке 
 (4) сообщение об ошибке 
 (5) пример не будет скомпилирован