- •Объектно-ориентированное программирование (общие сведения).
- •Атрибуты объекта в ооп.
- •Преимущества многократного использования кода, понятие модульности, ее реализация.
- •Возможности и назначение jvm.
- •Особенности проектирования программ в Java.
- •Объектная модель Java.
- •Пакет java.Lang.
- •Назначение и состав библиотек классов Java.
- •Особенности управления программами в Java.
- •Порядок выполнения программ в Java
- •Понятие превращения программ Java в исполняемый код.
- •Принцип инкапсуляции в java
- •Принцип наследования в Java
- •Понятие о классах в java
- •Реализация процедуры в java
- •Понтие функции в java
- •Возвращаемые значения в функциях.
- •Передача параметров в java.
- •Атрибуты класса
- •Способы создания и обработка массивов данных
- •Операторы прерывания программ, основные типы ошибок
- •Типы переменных в java
- •Особенности объявления переменных в java
- •Объявление массива данных в java
- •Логические операторы java
- •Операции и конструкции сравнения в java
- •Проектирование программ и состав модулей
- •Организация циклов в java
- •Понятие интерфейсов в java
- •Возможности java по работе с файлами
- •Потоки выполнения и синхронизация.
- •Виды встроенных классов.
- •Понятие коллекций, списков и итераторов.
- •Управление ходом выполнения программ.
- •Работа со стороками.
- •Сериализация объектов.
- •Создание объекта-исключения.
- •Использование модификаторов доступа.
- •Организация доступа к файлам.
- •Интерфейсы.
- •Основные отличия интерфейсов от классов.
- •Особенности наследования интерфейсов.
- •Базовые классы при работе с потомками выполнения в Java.
- •Базовые классы реализации ввода/вывода данных.
- •Объектные и ссылочные типы данных Java.
- •Понятие компиляции проекта в Java.
- •Способы создания модульного компонента в Java.
- •Работа "сборщика мусора".
- •Понятие преобразования типов в Java.
- •1. Виды преобразований
- •1.1. Расширяющие преобразования чисел
- •1.2. Сужающие преобразования чисел
- •1.3. Расширяющие преобразования ссылок
- •1.4. Сужающие преобразования ссылок
- •1.5. Преобразования в строки
- •1.6. Недопустимые преобразования
- •2. Контексты преобразований
- •2.1. Преобразование при присваивании
- •5.4.2.2. Преобразование аргументов метода
- •5.4.2.3. Преобразование в строку
- •5.4.2.4. Явное преобразование типа
- •5.4.3. Преобразования типов числовых операндов
Понятие преобразования типов в Java.
В языке Java действуют следующие правила:
Если один операнд имеет тип double, другой тоже преобразуется к типу double.
Иначе, если один операнд имеет тип float, другой тоже преобразуется к типу float.
Иначе, если один операнд имеет тип long, другой тоже преобразуется к типу long.
Иначе оба операнда преобразуются к типу int.
Преобразования типов
1. Виды преобразований
Каждое выражение в Java имеет тип, который определяется структурой выражения и типами составляющих его операндов (констант, переменных и методов). Однако, иногда нам может потребоваться явное преобразование выражения в другой тип. Кроме того, в некоторых ситуациях исполняющая система Java сама неявно проводит такие преобразования.
Преобразование типа Т1 в тип T2 позволяет выражению типа T1 трактоваться в период компиляции как выражение типа T2. В одних случаях это чисто синтаксическая конструкция, не влияющая на генерируемый код, в других преобразование типа требует дополнительных действий в период выполнения по изменению значения выражения или дополнительных проверок правильности применяемого преобразования.
Далее в этой главе приведена классификация всех возможных преобразований типов, а затем классификация контекстов в которой они могут использоваться.
1.1. Расширяющие преобразования чисел
Расширяющие преобразования чисел — это преобразования числового типа в "больший" числовой тип, которые считаются безопасными, т. к. не приводят к потере величины преобразуемого значения. Такими преобразованиями в Java являются:
преобразования byte в short, int, long, float и double;
преобразования short в int, long, float и double;
преобразования char в int, long, float и double;
преобразования int в long, float и double;
преобразования long в float и double;
преобразования float в double.
В действительности, преобразование целого значения в плавающее может привести к потере точности, т. е. к потере значащих цифр.
1.2. Сужающие преобразования чисел
Сужающие преобразования чисел — это преобразования числового типа в "меньший" числовой тип, которые могут привести как к потере величины, так и к потере точности. Такими преобразованиями в Java являются:
преобразования byte в char;
преобразования short в byte и char;
преобразования int в byte, short и char;
преобразования long в byte, short, int и char;
преобразования float в byte, short, int, long и char;
преобразования double в byte, short, int, long, float и char;
Мы не будем здесь подробно рассматривать правила, по которым происходят эти преобразования, поскольку интуитивно они понятны, а формально достаточно громоздки. При их применении важно помнить, что Java, в отличие от других языков, не генерирует ошибок при переполнении (overflow) или потере значения (underflow), поэтому контроль за корректностью преобразований полностью ложится на программиста.
1.3. Расширяющие преобразования ссылок
Расширяющие преобразования ссылок — это преобразования производных ссылочных типов в типы их предков, которые не требуют никаких действий на этапе исполнения и никогда не генерируют ошибок. Такими преобразованиями в Java являются:
преобразование любого класса или интерфейса в его предка (в частности, в тип Object);
преобразование класса в интерфейс, который он реализует;
преобразование любого массива в тип Object или тип Cloneable;
преобразование массива типа S[] в массив типа T[], если S и T — ссылочные типы, и преобразование S в T является расширяющим;
преобразование нулевого типа в любой ссылочной тип.
