2.2. Змінні

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

Як випливає з назви, змінні можуть змінюватися (точніше їх значення).

Змінні можуть бути двох видів

  • примітивні типи: int, float, double, char та інші, які являють собою числа, символи;
  • об'єкти, які представляють класи.

Змінної можна привласнити початкове значення (ініціалізацію) через знак рівності і зазначенням значення. Визначене значення має підходити типу, який ви вказали для змінної. Для оголошення декількох змінних одного типу можна використовувати коми:

1
2
int c, a, t; // визначення трьох змінних int 
int p = 2, u, s = 7; // визначення трьох змінних, при чому перша і третя ініціалізовані

Також можлива динамічна ініціалізація. Вам потрібно тільки простежити, щоб обчислюється вираз відповідало змінної.

1
2
double a = 4, b = 5; 
double c  = a + b; // змінна розраховується динамічно

У деяких випадках потрібно, щоб змінна не змінювалася, в цьому випадку змінна називається константою і має ключове слово final.

Змінні мають свою область видимості. Вона може бути доступна тільки всередині методу, циклу, класу. Подібний захист зменшує ризик помилок від несанкціонованого доступу або змін від чужого коду. Також слід пам'ятати, що всередині блоку змінні можна оголосити в будь-якому місці, але вони стають припустимими тільки після оголошення.

Змінні створюються при вході в їх область видимості і знищуються при виході з неї. Тому, змінні, які оголошені усередині методу, що не будуть зберігати свої значення між зверненнями до цього методу.

Якщо оголошення змінної містить ініціалізацію, то ініціалізація буде повторюватися при кожному входженні в блок, в якому вона оголошена.

Блоки бувають вкладеними, але тим не менш у внутрішньому блоці не можна оголошувати змінні з тим же ім'ям, що і в зовнішній області.

Примітивні типи Java не є об'єктами. До них відносяться:

• boolean - булевий тип, може мати значення true або false

• byte - 8-розрядне ціле число

• short - 16-розрядне ціле число

• int - 32-розрядне ціле число

• long - 64-розрядне ціле число

• char - 16-розрядне беззнакове ціле, що було символ UTF-16 (букви і цифри)

• float - 32-розрядне число у форматі IEEE 754 з плаваючою крапкою

• double - 64-розрядне число у форматі IEEE 754 з плаваючою крапкою

Прості числові типи

Тип

Розрядність

MIN

MAX

byte

8 біт

-128

127

short

16 біт

-32768

32767

int

32 біт

-2147483648

2147483647

long

64 біт

-9223372036854775808

9223372036854775807

float

32 біт

-3.4E+38

3.4E+38

double

64 біт

-1.7E+308

1.7E+308

Цілі типи

Java визначає чотири цілочисельних типу: byte, short, int, long. Вони можуть бути позитивними і негативними.

Тип byte

Найменший за розміром цілочисельний тип - byte. Це 8-бітовий тип з діапазоном допустимих значень від -128 до 127. Змінні типу byte часто використовуються при роботі з потоком даних з мережі або файлу, а також при роботі з необробленими двійковими даними або в масивах для економії пам'яті.

Оголосити змінну типу byte можна наступним чином:

1
2
byte c, a, t; 
// об'явили одразу три змінні

Клас Byte є оболонкою для даного типу. Без необхідності не використовуйте в Android клас Byte.

Тип short

Тип short - 16-бітовий тип в діапазоні від -32768 до 32767. Використовується дуже рідко.

1
2
short m; 
// змінна типу short

Клас Short є оболонкою для даного типу. Без необхідності не використовуйте в Android клас Short.

Тип int

Цілі числа, представлені типом int, є найпоширенішим типом в програмі, з яким ви будете працювати. Тому потрібно гарненько вивчити його і дізнатися його переваги і обмеження. Це 32-бітовий тип, що має діапазон допустимих значень від -2147483648 до 2147483647 (близько двох мільярдів). Часто використовується в циклах, индексировании масивів, хоча може здатися, що для невеликих операцій в циклі і масивах простіше використовувати short або byte. Потрібно запам'ятати, що тип int ефективний у цих випадках через особливості структури обчислювальних процесорів.

Як конвертувати строку або CharSequence в int?

1
2
String mString = "42";// строка 
int mInt = Integer.parseInt(mString);

Якщо у вас тип CharSequence, то його можна конвертувати спочатку в строку методом  toString(), а потім в int.

Тип long

Тип long - це 64-бітний тип зі знаком, який використовується в тих випадках, коли використовується дуже велике значення, яке не здатний зберігати тип int.

Можна використовувати символи l або L для позначення числа типу long. Рекомендую використовувати велику літеру, щоб уникнути можливої плутанини

1
2
long night = 101l;
System.out.println(night);

Клас Long є оболонкою для даного типу. Без необхідності не використовуйте в Android клас Long.

Типи з плаваючою крапкою

Числа з плаваючою крапкою (іноді їх називають дійсними числами) застосовуються при обчисленні виразів, в яких потрібна точність до десяткового знака. Наприклад, це може бути обчислення квадратного кореня, значень синуса, косинуса і т.п. Існує два типи з плаваючою крапкою: float і double, які представляють числа одинарної і подвійної точності.

Тип float

Тип float визначає значення одинарної точності, яке займає 32 біт. Змінні даного типу зручні, коли потрібно дрібна частина без особливої точності, наприклад, для грошових сум.

1
2
float tugrik; 
// змінна типу float

Клас Float є оболонкою для даного типу. Без необхідності не використовуйте в Android клас Float.

Тип double

Тип double забезпечує подвійну точність, що видно з його назви (double - подвійна). Займає 64 біт для зберігання значень. Багато математичних функцій повертають значення типу double. До речі, сучасні процесори оптимізовані під обчислення значень подвійної точності, тому вони краще, ніж тип float.

1
2
3
4
double pi, r, a; 
pi = 3.1416; // наближене значення Pi 
r = 5.5; // радіус кола 
a = pi * r * r; // площа кола

Клас Double є оболонкою для даного типу. Без необхідності не використовуйте в Android клас Double.

Символи (тип char)

Для зберігання символів Java використовує спеціальний тип char. Він відрізняється від типу char в мовах C / C ++, де є цілочисельний тип з розміром 8 біт. У Java для char використовується кодування Unicode і для зберігання Unicode-символів використовується 16 біт. Діапазон допустимих значень - від 0 до 65536 (негативних значень не існує).

1
2
3
4
5
char ch1, ch2, ch3; 
ch1 = 67; // код змінної 
ch2 = 'a'; // символ 
ch3 = 116; // код змінної 
textViewInfo.setText("Слово з трьох літер: " + ch1 + ch2 + ch3);

Хоча тип char використовується для зберігання Unicode-символів, його можна використовувати як цілочисельний тип, використовуючи додавання чи віднімання.

1
2
3
4
5
char ch1; 
ch1 = 'x'; 
textViewInfo.append("ch1 містить " + ch1); 
ch1++; 
textViewInfo.append("ch1 містить " + ch1);

Клас Character

Клас Character є оболонкою типу char. Щоб отримати значення типу char, що містить в об'єкті класу Character, викличте метод charValue ().

Бульові значення

Тип boolean призначений для зберігання логічних значень і може приймати тільки одне з двох можливих значень: true або false. Даний тип завжди повертається при використанні операторів порівняння (більше, менше, дорівнює, більше або дорівнює, менше або дорівнює, не дорівнює). Також він використовується в керуючих операторах if і for.

1
2
boolean check; 
check = true;

В операторах if використовується укорочена запис при значенні true:

1
2
if (check == true) ... // необов'язковий варіант 
if (check) ... // укорочений запис