Тип заливки в Java

Изменение значения из одного типа данных в переменную другого типа называется преобразованием типа данных.

Существует два типа литья,

  1. Примитивное литье типов
  2. Тип ссылочного типа

Примитивное литье

Кастинг между примитивными типами позволяет вам преобразовать значение одного типа в другой примитивный тип, называемый примитивным типом. Это чаще всего встречается с числовыми типами данных. Но логический примитивный тип никогда не может использоваться в актерском составе. Его значения должны быть либо истинными, либо ложными и не могут использоваться в операции литья.

Существует два основных типа расширения и сужения примитивного типа.

Расширение конверсий (неявное литье)

 
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:

  1. Upcasting
  2. Downcasting

Подкастинг отличает супертип, а понижение - к подтипу. Суперкастинг всегда разрешен, но субкастинг включает проверку типа и может вызывать исключение ClassCastException.

Приведение к базовому типу

Выделение объекта подтипа в супертип, и это называется upcast. В Java нам не нужно добавлять явное выражение, и вы можете напрямую назначить объект. Компилятор поймет и придаст значение супертипу. Делая это, мы поднимаем объект на общий уровень. Если мы предпочитаем, мы можем добавить явное приведение и никаких проблем.

Понижающее приведение

Приведение супертипа к подтипу называется downcast. В основном это делается. Делая это, мы сообщаем компилятору, что значение, хранящееся в базовом объекте, имеет супертип. Затем мы запрашиваем время выполнения для назначения значения. Из-за downcast мы получаем доступ к методам подтипа этого объекта. При выполнении downcasting, что вы хорошо знаете тип объекта, который вы будете бросать.

Источник: http://net-informations.com/Java/basics/casting.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector