Программирование на JAVA

Навигация

Лекция 1. Что такое Java? История создания

Лекция 2. Основы объектно-ориентированного программирования

Лекция 3. Лексика языка

Лекция 4. Типы данных

Лекция 5. Имена. Пакеты

Лекция 6. Объявление классов

Лекция 7. Преобразование типов

Лекция 8. Объектная модель в Java

Лекция 9. Массивы

Лекция 10. Операторы и структура кода. Исключения

Лекция 11. Пакет java.awt

Лекция 12. Потоки выполнения. Синхронизация

Лекция 13. Пакет java.lang

Лекция 14. Пакет java.util

Лекция 15. Пакет java.io

Лекция 16. Введение в сетевые протоколы

Здесь результат сложения будет уже типа long. Точно так же некор­ректна такая инициализация:

// пример вызовет ошибку компиляции byte b=5; byte с=-5;

Даже унарный оператор "-" проводит вычисления с точностью не меньше 32 бит.

Хотя во всех случаях инициализация переменных приводилась толь­ко для примера, а предметом рассмотрения были числовые операции, укажем корректный способ преобразовать тип числового значения:

byteb=1;

byte c=(byte)-b;

Итак, все числовые операторы возвращают результат типа int или long. Однако существует два исключения.

Первое из них — операторы инкрементации и декрементации. Их действие заключается в прибавлении или вычитании единицы из значе­ния переменной, после чего результат сохраняется в этой переменной и значение всей операции равно значению переменной (до или после изме­нения, в зависимости от того, является оператор префиксным или пост­фиксным). А значит, и тип значения совпадает с типом переменной. (На самом деле, вычисления все равно производятся с точностью минимум 32 бита, однако при присвоении переменной результата его тип понижается.)

byte х=5;

byte у1=х++; // на момент начала исполнения х равен 5

byte у2=х--; // на момент начала исполнения х равен 6

byte уЗ=++х; // на момент начала исполнения х равен 5

byte у4=--х; // на момент начала исполнения х равен 6

print(y1);

print(y2);

print(y3);

print(y4);

В результате получаем:

5 6 6 5

Никаких проблем с присвоением результата операторов ++ и — пере­менным типа byte. Завершая рассмотрение этих операторов, приведем еще один пример:

byte х=-128; print(-x);

byte у= 127; print(++y);

Результатом будет:

128 -128

Этот пример иллюстрирует вопросы преобразования типов при вы­числениях и случаи переполнения.

Вторым исключением является оператор с условием ? :. Если второй и третий операнды имеют одинаковый тип, то и результат операции будет такого же типа.

byte х=2; byte у=3;

byte z=(x>y) ? х : у; // верно, х и у одинакового типа byte abs=(x>0) ? х : -х; // неверно!

Последняя строка неверна, так как третий аргумент содержит число­вую операцию, стало быть, его тип int, а значит, и тип всей операции будет int, и присвоение некорректно. Даже если второй аргумент имеет тип byte, а третий — short, значение будет типа int.

Наконец, рассмотрим оператор конкатенации со строкой. Оператор + может принимать в качестве аргумента строковые величины