русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Види приведення даних


Дата додавання: 2014-05-29; переглядів: 1062.


В Java передбачено сім видів приведення:

- тотожне (identity);

- розширення примітивного типу (widening primitive);

- звуження примітивного типу (narrowing primitive);

- розширення об'єктного типу (widening reference);

- звуження об'єктного типу (narrowing reference);

- перетворення до рядка (String);

- заборонені перетворення (forbidden).

Розглянемо їх окремо.

Перетворення примітивних типів (розширення та звуження)

Для простих типів розширення означає, що здійснюється перехід від менш місткого типу до більш місткого. Наприклад, від типу byte (довжина 1 байт) до типу int (довжина 4 байти). Такі перетворення безпечні в тому сенсі, що новий тип завжди гарантовано вміщає в собі всі дані, які зберігалися в старому типі, і таким чином не відбувається втрати даних. Саме тому компілятор здійснює його сам, непомітно для розробника:

 

byte b = 3;

int a = b;

 

Наступні 19 перетворень є такими, що розширяються

від 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

Тим не менш, слід пам'ятати, що навіть при розширені, дані все-таки можуть бути в особливих випадках спотворені.

 

Зворотне перетворення (звуження) - означає, що перехід здійснюється від більш місткого типу до менш місткого. При такому перетворенні є ризик втратити дані. Наприклад, якщо число типу int було більше 127, то при приведенні його до byte значення бітів старше восьмого будуть втрачені. В Java таке перетворення повинно відбуватися явним чином, тобто програміст в коді винний явно вказати, що він має намір здійснити таке перетворення і готовий при необхідності втратити дані.

Наступні 23 перетворення є звужуючими:

від byte до char

від short до byte, char

від char до byte, short

від int до byte, short, char

від long до byte, short, char, int

від float до byte, short, char, int, long

від double до byte, short, char, int, long, float

При звуженні цілочисельного типу до більш вузького цілочисельного всі старші біти, які не потрапляють у новий тип, просто відкидаються. Не проводитися ніякого округлення або інших дій для отримання більш коректного результату:


<== попередня лекція | наступна лекція ==>
Примітивні й вказівні типи даних | Перетворення вказівних типів (розширення та звуження)


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн