Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Заключение
В этой лекции были рассмотрены правила работы с типами данных в строго типизированном языке Java. Поскольку компилятор строго отслеживает тип каждой переменной и каждого выражения, в случае изменения этого типа необходимо четко понимать, какие действия допустимы, а какие нет, с точки зрения компилятора и виртуальной машины.
Были рассмотрены все виды приведения типов в Java, то есть переход ОТ одного типа к другому. Они разбиваются на 7 групп, начиная с тождественного и заканчивая запрещенными. Основные 4 вида определяются сужающими или расширяющими переходами между простыми или ссылочными типами. Важно помнить, что при явном сужении числовых типов старшие биты просто отбрасываются, что порой приводит к неожиданному результату. Что касается преобразования ссылочных значений, то здесь Действует правило - преобразование никогда не порождает новых и не изменяет существующих объектов. Меняется лишь способ работы с ними. ,1 Особенным в Java является преобразование к строке.
Затем были рассмотрены все ситуации в программе, где могут происходить преобразования типов. Прежде всего, это присвоение значений, Когда преобразование зачастую происходит незаметно для программиста. Вызов метода во многом похож на инициализацию. Явное приведение Позволяет осуществить желаемый переход в том случае, когда компилятор Не позволяет сделать это неявно. Преобразование при выполнении числовых операций оказывает существенное влияние на результат.
В заключение была рассмотрена связь между типом переменной и ^Ипом ее значения.
Вариант 1
1, Корректен ли следующий пример кода, и если да, то сколько преобразований будет произведено при его исполнении? byte Ь=1; long m=-b; Object о="="; print("m"+o+m);
□ не корректен
□ корректен, 4 преобразования
□ корректен, 5 преобразований
□ корректен, 6 преобразований
2. Верны ли следующие выражения для переменной а" дробного типа? (5ЬоП)с!==(5Г10г1)(т1)о: (Ш1)<1»(1п1)(1опд)<1
□ первое верное, второе верное
□ да, нет
□ нет, да П нет, нет
3. Какие значения не могут участвовать в преобразовании к строке?
П выражения примитивного типа П выражения ссылочного типа П значение null П все могут
Вариант 2
Вариант 3
1. Корректен ли следующий пример? Если нет, то в каких строках какие ошибки будут сгенерированы? byte b=100-100; byte Ь=100+100; byte b=100* 100;
□ пример корректен
П пример некорректен, ошибки во второй и третьей строках
□ пример некорректен, ошибка в третьей строке
Для каких значений числовой переменной х будет верно следующее выражение?
х== |
-X |
□ |
0 |
□ |
-2147483648 (-23') |
□ |
(byte)(-128) |
□ |
0.0 |
□ |
-0.0 |
□ |
NaN |
2. Корректны ли следующие преобразования? Object о = (String)null; String s = о;
П корректно
П некорректно, ошибка в первой строке
П некорректно, ошибка во второй строке
□ некорректно, ошибки в обеих строках
3. Какое значение появится на консоли после выполнения следующего кода? charс=65; print(c); print(-t-c); print("="+c);
□ 65, 66, =66
□ А, В, =В
□ А, 65, =А
□ А, А, =А
2. Пусть классы Wolf и Rabbit являются наследниками класса Animal. Корректен ли следующий пример?
Wolf w = new Wolf (); Animal a = (Animal)w; Rabbit r = (Rabbit)a;
□ пример не будет откомпилирован
□ пример будет откомпилирован, но возникнет ошибка времени исполнения
□ пример полностью корректен
3. Значение какого типа будет хранить переменная после инициализации?
byte b= 1+2;
□ byte
□ short
□ int
240
16-3440