1. Навіщо потрібна конвертація типів?
Java — це суворо типізована мова. Якщо у компʼютера є «коробочка» для числа, то спроба вставити в неї текст — приблизно те саме, що спроба встромити виделку в USB‑розʼєм. Компілятор такого не пробачить! 😡
Але на практиці ми часто працюємо водночас із різними типами даних. Наприклад, у вас є рядок, що містить число. Ось тут і потрібне перетворення (або конвертація) типів.
Розгляньмо приклад. Припустімо, ви хочете зберігати кількість користувачів:
int a = 1;
int b = "2";
int c = "три";
Компілятор тут одразу скаже: «За кого ви мене маєте? Я не вмію автоматично перетворювати рядок на число без вашої участі — потрібно явно перетворити рядок на число».
У Java є кілька способів конвертації, і кожен — зі своїми плюсами, мінусами та типовими підводними каменями.
2. Перетворюємо int у String
На практиці часто потрібно отримати рядкове подання числа: наприклад, щоб вивести його на екран, зберегти у файл, передати мережею, обʼєднати з текстом тощо. У Java для цього існує кілька способів, кожен із яких доречний у певних ситуаціях.
Функція String.valueOf()
Це основний і найпоширеніший спосіб:
int number = 42;
String str = String.valueOf(number); // str == "42"
String.valueOf() перетворює число на рядок, що відповідає значенню переданого аргументу.
Конкатенація з порожнім рядком
Дієвий і простий спосіб:
int number = 42;
String str = "" + number;
Такий підхід добре працює для простих випадків, але може бути менш очевидним для того, хто читає код.
3. Неявне перетворення в рядок
Як уже зазначено, у Java будь‑які змінні, обʼєкти чи вирази можна перетворити на рядок типу String.
Більше того, це відбувається автоматично, коли ми поєднуємо рядок із іншим типом. Приклади:
int a = 5;
String name = "Аня" + a; // name містить рядок "Аня5"
int a = 5;
String city = a + "New York" + a; // city містить рядок "5New York5"
int number = 10;
String code = "Yo";
String message = "Hello! " + number + code; // message містить рядок "Hello! 10Yo"
У всіх трьох прикладах ми поєднували змінні типу int і String, і в результаті завжди отримували рядок (String).
Приклади:
int a = 5;
String name = "1" + a; // name містить рядок "15"
int a = 5;
String city = a + "9" + a; // city містить рядок "595"
int number = 10;
String code = "10";
String message = "" + number + code; // message містить рядок "1010"
Операція додавання виконується зліва направо, тож результат може бути несподіваним. Приклад:
int a = 5;
String name = a + a + "1" + a; // name містить рядок "1015"
Порядок виконання: ((a + a) + "1") + a
4. Перетворення рядка на число
Нагадаємо: щоб перетворити число на рядок у Java, достатньо додати до нього порожній рядок:
String str = "" + число;
А що робити, якщо потрібно перетворити рядок на число? Не кожен рядок можна перетворити на число. Якщо рядок складається лише з цифр, це можливо. Для цього в Java є спеціальна функція.
Виглядає ця команда так:
int x = Integer.parseInt(рядок);
Де int x — оголошення цілочисельної змінної x, а рядок — це рядок, що містить число (послідовність цифр, можливо зі знаком «-» на початку).
Приклади:
String str = "123";
int number1 = Integer.parseInt(str); // number1 містить число 123
int number2 = Integer.parseInt("321"); // number2 містить число 321
int number3 = Integer.parseInt("321" + 0); // number3 містить число 3210
int number4 = "321"; // Не скомпілюється: змінна типу int, а значення — типу String
Для відʼємних значень це теж працює: функція Integer.parseInt() обробляє їх коректно.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ