filmov
tv
Уроки Java. 5. Приведение (преобразование) типов
Показать описание
В операции присваивания и арифметических выражениях могут использоваться переменные и выражения разных типов. Например, возьмем код, рассмотренный на прошлом уроке:
int a = 10;
int b=4;
Результат данного кода будет 2. И мы рассмотрели, что для получения точного результата необходимо заменить типы данных переменных на float или double. А что будет, если заменить тип данных только для одной переменной?
int a = 10;
double b=4;
Результат: 2.5
Почему это произошло? Благодаря преобразованию типов. В Java преобразования типов при вычислении выражений могут выполняться автоматически (неявное), либо с помощью оператора приведения типа (явное). При выполнении операции присваивания преобразование типов происходит автоматически, если происходит расширяющее преобразование (widening conversion) и два типа совместимы. Расширяющее (неявное) преобразование происходит, если значение одного типа преобразовывается в более широкий тип, с большим диапазоном допустимых значений (например, из byte в short или, как в нашем случае, из int в double).
В нашем случае преобразование типов будет применено автоматически, т.к. оно является расширяющим. Причем, для того, чтобы указать, что мы хотим использовать тип данных double, можно не объявлять тип переменной, а просто записать число в формате с плавающей точкой.
int a = 10;
Результат будет тот же.
При приведении типов данных следует учитывать, что тип данных boolean не совместим с другими типами данных и не может быть преобразован. Схему расширяющего преобразования в Java вы видите на экране.
Сужающее преобразование (narrowing conversion) обратно расширяющему и может привести к потере точности числа или к его искажению. Поэтому при сужающих преобразованиях при компиляции программы выводится сообщение о несовместимости типов.
Если все же необходимо выполнить такие преобразования, используется операция приведения типа.
int a = 10;
double b=4;
int c=a/(int)b;
Перед переменной, которую необходимо преобразовать, в скобках указывается тип данных, к которому нужно явно привести переменную.
С числами вроде бы разобрались. Теперь рассмотрим преобразование к тексту (ссылочный тип String). Практически все типы можно приводить к типу String неявно. Это наглядно демонстрируется при сложении других переменных с переменной String:
int a = 1, b = 7;
Результат выполнения данного кода: 1+7=8. Кстати, если вы забудете поставить круглые скобки, которые (как мы рассмотрели на прошлом уроке) влияют на приоритет выполнения операций, то получится результат: 1+7=17. Это происходит потому, что сначала переменные преобразовываются в текст, а потом выводятся на экран.
Также для преобразования к типу String существует метод toString(), который мы рассмотрим на следующих уроках.
int a = 10;
int b=4;
Результат данного кода будет 2. И мы рассмотрели, что для получения точного результата необходимо заменить типы данных переменных на float или double. А что будет, если заменить тип данных только для одной переменной?
int a = 10;
double b=4;
Результат: 2.5
Почему это произошло? Благодаря преобразованию типов. В Java преобразования типов при вычислении выражений могут выполняться автоматически (неявное), либо с помощью оператора приведения типа (явное). При выполнении операции присваивания преобразование типов происходит автоматически, если происходит расширяющее преобразование (widening conversion) и два типа совместимы. Расширяющее (неявное) преобразование происходит, если значение одного типа преобразовывается в более широкий тип, с большим диапазоном допустимых значений (например, из byte в short или, как в нашем случае, из int в double).
В нашем случае преобразование типов будет применено автоматически, т.к. оно является расширяющим. Причем, для того, чтобы указать, что мы хотим использовать тип данных double, можно не объявлять тип переменной, а просто записать число в формате с плавающей точкой.
int a = 10;
Результат будет тот же.
При приведении типов данных следует учитывать, что тип данных boolean не совместим с другими типами данных и не может быть преобразован. Схему расширяющего преобразования в Java вы видите на экране.
Сужающее преобразование (narrowing conversion) обратно расширяющему и может привести к потере точности числа или к его искажению. Поэтому при сужающих преобразованиях при компиляции программы выводится сообщение о несовместимости типов.
Если все же необходимо выполнить такие преобразования, используется операция приведения типа.
int a = 10;
double b=4;
int c=a/(int)b;
Перед переменной, которую необходимо преобразовать, в скобках указывается тип данных, к которому нужно явно привести переменную.
С числами вроде бы разобрались. Теперь рассмотрим преобразование к тексту (ссылочный тип String). Практически все типы можно приводить к типу String неявно. Это наглядно демонстрируется при сложении других переменных с переменной String:
int a = 1, b = 7;
Результат выполнения данного кода: 1+7=8. Кстати, если вы забудете поставить круглые скобки, которые (как мы рассмотрели на прошлом уроке) влияют на приоритет выполнения операций, то получится результат: 1+7=17. Это происходит потому, что сначала переменные преобразовываются в текст, а потом выводятся на экран.
Также для преобразования к типу String существует метод toString(), который мы рассмотрим на следующих уроках.
Комментарии