Програмування на мові Java Типи

March 5th, 2009


« Програмування на мові Java Робота з рядками   |   Програмування на мові Java Обробка виключень »

Автоматичне перетворення типу іноді може виявитися причиною несподіваних повідомлень транслятора про помилки. Наприклад, показаний нижче код, хоч і виглядає цілком коректним, приводить до повідомлення про помилку на фазі трансляції. У нім ми намагаємося записати значення 50* 2, яке повинне чудово уміщатися в тип byte, в байтову змінну.
Але із-за автоматичного перетворення типу результату в int ми отримуємо повідомлення про помилку від транслятора-ведь при занесенні int в byte може відбутися втрата точності.

byte b = 50; b = b* 2; ^ Incompatible type for =. Explicit cast needed to convert int to byte.

(Несумісний тип для =. Необхідне явне перетворення int в byte)

Виправлений текст :

byte b = 50; b = (byte) (b* 2);

що приводить до занесення в b правильного значення 100.

Якщо у виразі використовуються змінні типів byte, short і int, то щоб уникнути переповнювання тип всього виразу автоматично підвищується до int. Якщо ж у виразі тип хоч би однієї переменной-long, то і тип всього виразу теж підвищується до long. He забувайте, що всі цілі літерали, в кінці яких не коштує символ L (або 1), мають тип int.

Якщо вираз містить операнди типу float, то і тип всього виразу автоматично підвищується до float. Якщо ж хоч би один з операндів має тип double, то тип всього виразу підвищується до double. За умовчанням Java розглядає всі літерали з плаваючою крапкою, як що мають тип double.
Приведена нижче програма показує, як підвищується тип кожної величини у виразі для досягнення відповідності з другим операндом кожного бінарного оператора.

class Promote { public static void main (String args []) { byte b = 42; char з = ‘a’; short s = 1024; int i = 50000; float f = 5.67f; double d =.1234; double result = (f* b) + (i/ з)-(d* s); System. out.
println ((f* b)+ “+ “+ (i / з)+ “-” + (d* s)); System. out. println (”result = “+ result); } }


Tags: , , , , , ,

програмування


Схожі записи

Категория: програмування |

Комментарии