Typy danych

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 lub false.

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: Odpowiednik void 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ący Object w Javie. Każdy obiekt w Kotlinie dziedziczy z Any.

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.