Тип заливки в Java
Содержание
Изменение значения из одного типа данных в переменную другого типа называется преобразованием типа данных.
Существует два типа литья,
- Примитивное литье типов
- Тип ссылочного типа
Примитивное литье
Кастинг между примитивными типами позволяет вам преобразовать значение одного типа в другой примитивный тип, называемый примитивным типом. Это чаще всего встречается с числовыми типами данных. Но логический примитивный тип никогда не может использоваться в актерском составе. Его значения должны быть либо истинными, либо ложными и не могут использоваться в операции литья.
Существует два основных типа расширения и сужения примитивного типа.
Расширение конверсий (неявное литье)
int i = 1000; double j = i;
В приведенном выше примере выполняется автоматическое литье по типу, то есть целочисленная переменная (4 байт), преобразованная в двойную переменную (8 байт). Кастинг произошел от более низкого типа данных до более высокого типа данных, поэтому нет потери данных.
Расширение конверсий в Java
From a byte to a short, an int, a long, a float, or a double From a short to an int, a long, a float, or a double From a char to an int, a long, a float, or a double From an int to a long, a float, or a double From a long to a float or a double From a float to a double
ПРИМЕЧАНИЕ. Расширяющееся преобразование значения int или long в значение с плавающей точкой или длинное значение для двойного значения может привести к потере точности. То есть результат может потерять часть наименее значимых бит значения. В этом случае результирующее значение с плавающей запятой будет правильно округленной версией целочисленного значения, используя режим IEEE 754, близкий к ближайшему.
Ограничение конверсий (Явное литье)
Преобразование из более широкого типа данных (более высокий размер) в более узкий тип данных (нижний размер) называется сужением преобразования. Такой тип преобразования может привести к потере информации. Это не делается неявно JVM и требует явного литья.
double i = 100.7; int j = (int) i;
В приведенном выше примере двойная переменная (8 байт) преобразуется в целочисленную переменную (4 байта). Кастинг произошел от более высокого типа данных до более низкого типа данных, поэтому может привести к потере информации.
Сужение конверсий в Java
From a byte to a char From a short to a byte or a char From a char to a byte or a short From an int to a byte, a short, or a char From a long to a byte, a short, a char, or an int From a float to a byte, a short, a char, an int, or a long From a double to a byte, a short, a char, an int, a long, or a float
Тип ссылочного типа
Объекты классов также могут быть помещены в объекты других классов, когда исходный и целевой классы связаны наследованием, а один класс является подклассом другого. Приведение может быть к его собственному типу класса или к одному из его классов или интерфейсов подкласса или суперкласса. Существуют правила компиляции и правила выполнения для кастинга в Java. Существует два типа ссылочного типа Casting в Java:
- Upcasting
- Downcasting
Подкастинг отличает супертип, а понижение - к подтипу. Суперкастинг всегда разрешен, но субкастинг включает проверку типа и может вызывать исключение ClassCastException.
Приведение к базовому типу
Выделение объекта подтипа в супертип, и это называется upcast. В Java нам не нужно добавлять явное выражение, и вы можете напрямую назначить объект. Компилятор поймет и придаст значение супертипу. Делая это, мы поднимаем объект на общий уровень. Если мы предпочитаем, мы можем добавить явное приведение и никаких проблем.
Понижающее приведение
Приведение супертипа к подтипу называется downcast. В основном это делается. Делая это, мы сообщаем компилятору, что значение, хранящееся в базовом объекте, имеет супертип. Затем мы запрашиваем время выполнения для назначения значения. Из-за downcast мы получаем доступ к методам подтипа этого объекта. При выполнении downcasting, что вы хорошо знаете тип объекта, который вы будете бросать.