1. Po co jest potrzebna konwersja typów?
Java — to język o ścisłym typowaniu. Jeśli komputer ma „pudełko” na liczbę, to próba włożenia tam tekstu — mniej więcej to samo, co próba wsadzenia widelca do gniazda USB. Kompilator ci tego nie wybaczy! 😡
Jednak w praktyce często pracujemy równocześnie z różnymi typami danych. Na przykład masz ciąg, który zawiera liczbę. I tu właśnie potrzebna jest konwersja (czyli przekształcenie) typów.
Rozważmy przykład. Załóżmy, że chcesz przechowywać liczbę użytkowników:
int a = 1;
int b = "2";
int c = "trzy";
Kompilator od razu powie: „Za kogo ty mnie masz? Nie potrafię automatycznie przekształcać ciągu w liczbę, bez ciebie ani rusz. Trzeba jawnie zamienić ciąg na liczbę.”
W Java istnieje kilka sposobów konwersji, a każdy — ze swoimi plusami, minusami i typowymi pułapkami.
2. Konwertujemy int na String
W naszej pracy często trzeba uzyskać tekstową reprezentację liczby: na przykład, aby wyświetlić ją na ekranie, zapisać do pliku, przesłać przez sieć, połączyć z tekstem itd. W Java istnieje kilka sposobów, z których każdy jest wygodny w innych sytuacjach.
Funkcja String.valueOf()
To podstawowy i najczęściej stosowany sposób:
int number = 42;
String str = String.valueOf(number); // str == "42"
String.valueOf() przekształca liczbę w taki ciąg, który odpowiada typowi przekazanego do niej obiektu.
Konkatenacja z pustym ciągiem
Stary, ale skuteczny sposób:
int number = 42;
String str = "" + number;
Takie podejście działa szybko w prostych przypadkach, ale jest mniej czytelne dla programisty czytającego kod.
3. Niejawna konwersja do ciągu
Jak już wspomniano wyżej, twórcy Java sprawili, że absolutnie wszystkie zmienne, obiekty i wyrażenia w Java można przekształcić do typu String.
Co więcej, dzieje się to automatycznie, gdy łączymy typ String z jakimś innym typem. Przykłady:
int a = 5;
String name = "Ania" + a; // name zawiera ciąg Ania5
int a = 5;
String city = a + "New York" + a; // city zawiera ciąg 5New York5
int number = 10;
String code = "Yo";
String message = "Hello! " + number + code; // message zawiera ciąg Hello! 10Yo
We wszystkich trzech przykładach spokojnie łączyliśmy zmienne typu int i String, a w rezultacie zawsze otrzymaliśmy typ String.
Przykłady:
int a = 5;
String name = "1" + a; // name zawiera ciąg 15
int a = 5;
String city = a + "9" + a; // city zawiera ciąg 595
int number = 10;
String code = "10";
String message = "" + number + code; // message zawiera ciąg 1010
Operacja dodawania wykonywana jest od lewej do prawej, więc wynik może być nieco zaskakujący. Przykład:
int a = 5;
String name = a + a + "1" + a; // name zawiera ciąg 1015
Kolejność wykonywania: ((a + a) + "1") + a
4. Konwersja ciągu na liczbę
Aby zamienić liczbę na ciąg w Java, wystarczy złączyć ją z pustym ciągiem:
String str = "" + chislo;
A co zrobić, jeśli trzeba przekształcić ciąg w liczbę? Nie każdy ciąg da się zamienić na liczbę. Ale jeśli ciąg składa się tylko z cyfr, to jednak można. W tym celu w Java jest specjalna funkcja.
Polecenie wygląda tak:
int x = Integer.parseInt(stroka);
Gdzie int x — to deklaracja zmiennej całkowitej x, a stroka — to liczba podana w postaci ciągu (ciąg, składający się z cyfr).
Przykłady:
String str = "123";
int number1 = Integer.parseInt(str); // number1 zawiera liczbę 123;
int number2 = Integer.parseInt("321"); // number2 zawiera liczbę 321
int number3 = Integer.parseInt("321" + 0); // number3 zawiera liczbę 3210
int number4 = "321"; // Nie skompiluje się: zmienna typu int, a wartość typu String
Dla wartości ujemnych to również działa: funkcja Integer.parseInt() jest bardzo „sprytna”.
GO TO FULL VERSION