Interesują Was podstawowe typy danych w języku Kotlin? To dobrze trafiliście! Przedstawię Wam je wszystkie i krótko omówię czym się różnią między sobą. Przedstawiciele języka Java będą się czuć jak u siebie w domu, jednakże istnieją drobne różnice, które trzeba mieć na względzie. Serdecznie zapraszam do środka!
Tweet |
PODSTAWOWE TYPY DANYCH W JĘZYKU KOTLIN
Kotlin posiada wszystkie typy proste, co język Java, zatem nie bójcie się że coś zostało wycięte. Muszę jednak zwrócić uwagę na parę wyjątków jakie przedstawię podczas prezentowania poszczególnych rodzajów. Podzielimy to sobie na kategorie:
CAŁKOWITOLICZBOWE
Typy całkowitoliczbowe to typy będące w stanie przechowywać dane w postaci liczb całkowitych. Oto cztery podstawowe typy:
NAZWA | MINIMALNY ZAKRES | MAKSYMALNY ZAKRES | PRZYKŁAD |
Byte | -27 | 27 - 1 | -66 |
Short | -215 | 215 - 1 | 25000 |
Int | -231 | 231 - 1 | 3000000 |
Long | -263 | 263 - 1 | 320000000L |
Kotlin posiada w swoim arsenale cztery typy proste przeznaczone do przechowywania liczb całkowitych. Możemy wpływać na to, jaki konkretnie typ całkowitoliczbowy chcemy uzyskać dopisując go ręcznie po znaku dwukropka:
val x: Byte = 80
Przy czym, ostrzegam! Gdy podana wartość będzie poza dopuszczalnym zakresem pożądanego typu, zostanie wyświetlony błąd kompilacji. To jest jeden z kolejnych dowodów jak bardzo Kotlin zwraca uwagę na bezpieczeństwo kodu. Możemy mimo wszystko "postawić na swoim" stosując konwersję typu na inny.
Całkowitoliczbowe typy danych w języku Kotlin działają następująco. Jeżeli nie podamy jawnie jednego z wyżej wymienionych typów, to domyślnie zostanie on potraktowany jako "Int", chyba że podana przez nas liczba okaże się zbyt duża dla "Int". Wtedy kompilator "sięgnie" po "Long". W sytuacji, gdy chcemy utworzyć zmienną typu "Long" a liczba nie jest na tyle duża żeby przekroczyć zakres "Int", jesteśmy w stanie wymusić ten typ w jeszcze prostszy sposób: wystarczy na samym końcu wartości dodać literkę ‘L’ (duże L):
val longValue = 15000L
ZMIENNOPRZECINKOWE
Typy zmiennoprzecinkowe nadają się do przechowywania liczb zmiennoprzecinkowych (z ułamkiem). Kotlin posiada dwa takie typy:
NAZWA | MINIMALNY ZAKRES | MAKSYMALNY ZAKRES | PRZYKŁAD |
Float | -231 | 231 - 1 | -16.67f |
Double | -263 | 263 - 1 | 329.05 |
Zmiennoprzecinkowe typy danych w języku Kotlin posiadają pewne "kruczki" których trzeba być świadom. Zarówno "Float", jak i "Double" kierują się standardem IEEE 754. W związku z tym, różnią się nie tylko zakresem przechowywanych liczb, ale także liczbą tzw. "cyfr znaczących" czyli ile cyfr może występować po przecinku. Więcej różnic pomiędzy jednym a drugim, możecie znaleźć na tej stronie.
Notabene, że chcąc utworzyć zmienną typu "Float", musicie dodać "ogonek" w postaci dużej lub małej litery ‘F’. W przeciwnym razie, każda liczba zmiennoprzecinkowa zostanie domyślnie przypisana do typu "Double".
ZNAKOWE
Oto dwa "znakowe" typy danych nadające się do przechowywania znaków:
NAZWA | PRZYKŁAD |
Char | 'r' |
String | "Kotlin" |
Znakowe typy danych w języku Kotlin przechowują znaki w rozumieniu kodów ASCII. "Char" przeznaczony jest dla pojedynczych znaków, które to umieszczamy w apostrofach. "String" z kolei umożliwia składowanie łańcuchów znaków inaczej także nazywanych "literałami znakowymi", które otoczone są cudzysłowami.
Drodzy "fachowcy od Javy". Mam dla Was komunikat odnośnie typu "Char". Jak dobrze wiecie, "char" w Javie jest w stanie również przechowywać małe liczby w takim samym zakresie, co "Byte" przedstawiony u góry.
char c = 56;
W Kotlinie to będzie niedopuszczalne! Nie mieszajcie jednego z drugim. To kolejny krok języka stawiający na bezpieczeństwo. Małe liczby do "Byte", znaki do "Char" (chyba, że zastosujemy konwersję jawną), OK?
LOGICZNE
Z logicznych typów danych, Kotlin posiada jedynie "Boolean". To jest możliwość składowania jedynie wartości "true" i "false", czyli prawdy i fałszu. Nic w tej kwestii się nie zmienia patrząc na poprzednika.
val b = false
NIESTANDARDOWE
Ostatnie słowo o niestandardowych typach danych.
WŁASNA KLASA
Przy pomocy słowa "class", możemy zawsze utworzyć własną klasę dla przyszłych obiektów, aby ona stanowiła nowy typ danych.
NOTHING
Typ danych "niczego"?! Aha, żadna ściema! Nawet wartość "null" ma własny typ danych! Wymaga rozumienia używania typów akceptujących wartość pustą!
SPOSÓB NA "LEGALNE" PRZENOSZENIE TYPÓW
Co prawda, Kotlin nie zezwoli nam na "mieszanie" typów danych, jak to ma miejsce w Javie:
char c = 56;
Jednak jest jeden sposób, aby typy danych w języku Kotlin mogły być przenoszone między sobą. Konwersja! Albo przez funkcję, albo przez daną składową. Akurat dla przypadku typu "Char", obiekt tego typu posiada właściwość "code", zatem poniższy kod napisany w Javie:
char c = '5';
System.out.println((int)c);
przeszedłby w Kotlinie w takiej postaci:
val c = '5'
println(c.code)
Można jeszcze użyć metody "toInt", natomiast w przypadku znaku wystąpi ostrzeżenie o zdeprecjonowaniu (funkcjonalność, która "wyszła z użycia" i zawiera w sobie lepszy odpowiednik) więc najlepiej skorzystać z "code". Każda metoda konwertująca zaczyna się od przedrostka "to". Oto spis wszystkich metod przeznaczonych do konwersji:
- toByte
- toShort
- toInt
- toLong
- toFloat
- toDouble
- toChar
- toString
- toBoolean
Wśród podstawowych typów danych wyróżnia się dziewięć takich w Kotlinie: "Byte", "Short", "Int", "Long", "Float", "Double", "Char", "String", "Boolean".
Oto koniec tego skromnego wpisu. Przejrzeliście sobie przed sekundą podstawowe typy danych w języku Kotlin, a także jak możemy w sposób niebudzący zastrzeżeń przenosić się z jednego typu do drugiego.