Typy danych w Kotlinie definiują rodzaj wartości, które zmienna może przechowywać. Kotlin, jako język statycznie typowany, wymaga określenia typu danych dla zmiennych podczas kompilacji, co pozwala na wykrycie błędów związanych z niezgodnością typów jeszcze przed uruchomieniem programu. Kotlin oferuje szeroki zakres wbudowanych typów danych, które można podzielić na kilka głównych kategorii:
Liczbowe Typy Danych
Kotlin wspiera różne typy danych dla liczb:
Byte
: 8-bitowa wartość sygnowana (-128 do 127).Short
: 16-bitowa wartość sygnowana (-32768 do 32767).Int
: 32-bitowa wartość sygnowana (-2^31 do 2^31-1).Long
: 64-bitowa wartość sygnowana (-2^63 do 2^63-1).Float
: 32-bitowa wartość zmiennoprzecinkowa. Może przechowywać do 6-7 cyfr dziesiętnych.Double
: 64-bitowa wartość zmiennoprzecinkowa. Może przechowywać do 15-16 cyfr dziesiętnych.
Kotlin umożliwia łatwą konwersję między tymi typami danych, ale wymaga jawnego określenia chęci wykonania takiej konwersji.
Typy Znakowe
Char
: Reprezentuje pojedynczy znak Unicode. Deklarowany przy użyciu pojedynczego cudzysłowu, np.'A'
.
Typy Logiczne
Boolean
: Reprezentuje wartość logiczną, która może byćtrue
lubfalse
.
Typy Łańcuchów Znaków
String
: Reprezentuje ciąg znaków. Może zawierać dowolny ciąg znaków i jest deklarowany przy użyciu podwójnych cudzysłowów, np."Hello, Kotlin!"
.
Kolekcje
Kotlin, podobnie jak inne nowoczesne języki programowania, oferuje wsparcie dla kolekcji takich jak listy, zbiory i mapy, które mogą przechowywać grupy obiektów.
- Listy (
List
): Sekwencyjna kolekcja elementów. Kotlin rozróżnia listy niemutowalne (listOf
) i mutowalne (mutableListOf
). - Zbiory (
Set
): Kolekcja unikalnych elementów. Podobnie jak listy, mogą być niemutowalne (setOf
) lub mutowalne (mutableSetOf
). - Mapy (
Map
): Kolekcja par klucz-wartość. Dostępne są wersje niemutowalne (mapOf
) i mutowalne (mutableMapOf
).
Specjalne Typy
Unit
: Odpowiednikvoid
w Javie. Używany, gdy funkcja nie zwraca żadnej wartości.Nothing
: Oznacza, że wyrażenie lub funkcja nigdy się nie zakończy normalnie (np. zawsze rzuca wyjątek).Any
: Najbardziej ogólny typ w Kotlinie, odpowiadającyObject
w Javie. Każdy obiekt w Kotlinie dziedziczy zAny
.
Nullability
Kotlin wprowadza system typów nullowalnych, aby zapobiegać NullPointerException
. Każdy typ może być oznaczony jako mogący przyjmować wartość null
poprzez dodanie znaku zapytania po nazwie typu (np. String?
). System ten wymusza na programiście obsługę przypadków null
, zwiększając bezpieczeństwo i stabilność kodu.
Typy danych i ich konwersje
W Kotlinie konwersja między typami jest świadomym działaniem programisty i wymaga użycia funkcji konwertujących, takich jak toInt()
, toDouble()
itp. Automatyczna konwersja typów (tzw. „implicit conversion”) nie jest wspierana, co zapobiega wielu błędom związanym z niezamierzoną zmianą typu danych.
Opanowanie typów danych w Kotlinie to klucz do efektywnego programowania i tworzenia bezpiecznego, łatwego w utrzymaniu kodu. Warto eksperymentować z różnymi typami i ich zastosowaniami, aby lepiej zrozumieć, jak można wykorzystać te cechy w praktyce.