Samouczek programowania w Kotlinie

Co to jest Kotlin?

Kotlin to jฤ™zyk programowania typu open source o statycznym typie, ktรณry dziaล‚a Java Maszyna wirtualna (JVM). ลฤ…czy programowanie obiektowe (OOP) i programowanie funkcjonalne w nieograniczonych, samowystarczalnych i wyrรณลผniajฤ…cych siฤ™ platformach. Umoลผliwia takลผe ล‚ฤ…czenie funkcjonalnoล›ci za pomocฤ… miniaturowych kodรณw. Kotlin to jฤ™zyk programowania ogรณlnego przeznaczenia zaprojektowany przez JetBrains.

Historia Kotlina

Oto waลผne punkty orientacyjne z historii Kotlina:

Rok wydarzenie
2016 Uruchomiono Kotlin v1.0
2017 Ogล‚oszenie Google o pierwszorzฤ™dnym wsparciu jฤ™zyka Kotlin w systemie Android
2018 Kotlin v1.2 zawiera dodatek umoลผliwiajฤ…cy dystrybucjฤ™ kodรณw pomiฤ™dzy JVM i JavaScenariusz
2019 Google ogล‚osiล‚ Kotlin jako preferowany jฤ™zyk programowania Android Twรณrcy aplikacji
2021 20 wrzeล›nia 2021 wypuszczono Kotlin v1.5.31.

Powody uลผywania Kotlina

Oto kilka waลผnych powodรณw, dla ktรณrych Kotlin jest powszechnie uลผywany:

  • Kotlin jest jฤ™zykiem o typie statycznym, ktรณry jest bardzo ล‚atwy do odczytania i zapisu.
  • Programy Kotlin nie wymagajฤ… ล›rednikรณw w swoim programie. Dziฤ™ki temu kod jest ล‚atwiejszy i bardziej czytelny.
  • Jฤ™zyk ten umoลผliwia wymianฤ™ i wykorzystanie informacji Java na rรณลผne sposoby. Ponadto, Java i kod Kotlina mogฤ… wspรณล‚istnieฤ‡ w tym samym projekcie.
  • System typรณw Kotlina ma na celu wyeliminowanie wyjฤ…tku NullPointerException z kodu.
  • Napisanie nowego kodu w Kotlinie zajmie Ci mniej czasu. Jeszcze ล‚atwiej jest wdroลผyฤ‡ kod Kotlin i utrzymaฤ‡ go na duลผฤ… skalฤ™.

Cechy Kotlina

Oto kilka cech Kotlina, ktรณre dadzฤ… Ci pewnoล›ฤ‡ ล›cieลผki postฤ™pu jฤ™zyka programowania.

Przyciฤ™te kodowanie:

Kotlin to jฤ™zyk programowania oparty na OOP, w ktรณrym liniฤ™ kodu moลผna przyciฤ…ฤ‡ nawet o 40%, co czyni Kotlin idealnym wyborem do tworzenia oprogramowania lub stron internetowych.

Otwarte ลบrรณdล‚o:

Kotlina za Android wykorzystuje JVM i ล‚ฤ…czy w sobie cechy OOP i programowania zorientowanego funkcjonalnie.

Szybka kompilacja:

kod moลผna ล‚atwo skompilowaฤ‡, pracujฤ…c w jฤ™zyku Kotlin, co przekล‚ada siฤ™ na lepszฤ… wydajnoล›ฤ‡ programowania na Androida, a takลผe wyjaล›nia, jakiego typu funkcji danych moลผna uลผywaฤ‡ w caล‚ym kodzie.

Funkcje rozszerzenia:

Kotlin moลผe obsล‚ugiwaฤ‡ rรณลผne funkcje rozszerzeล„ bez wprowadzania jakichkolwiek zmian w kodzie. pomaga uczyniฤ‡ istniejฤ…cy kod bardziej atrakcyjnym i wspaniaล‚ym dla programistรณw.

Na przykล‚ad:

Fun String.removeFirstLastChar():
String = this.substring(1, this.length -1)

Ten kod pomoลผe w skrรณceniu pierwszego i ostatniego znaku ciฤ…gu, moลผemy go zastosowaฤ‡ jako:

Val string1 = "Today is cloudy."
Val string2 = string1.removeFirstLastChar()

Zerowe bezpieczeล„stwo:

W Kotlinie system rozrรณลผnia odniesienia zerowe i nieodwoล‚ania zerowe, jak pokazano w poniลผszym przykล‚adzie Kotlina.

Na przykล‚ad zmienna typu String nie moลผe zawieraฤ‡ wartoล›ci null:

Var string1: String = "Today is Sunday"
String1 = null  // compilation error
To permit null, we can adjoin the nullable variable :
Var string2: String? = "Today is Sunday"
String2 = null
print(string2)

Interoperacyjny:

Kod Kotlina moลผe byฤ‡ uลผywany przez Java, Java kody mogฤ… byฤ‡ uลผywane z Kotlinem. Jeล›li wiฤ™c masz wiedzฤ™ nt OOP programowania, ล‚atwo jest przejล›ฤ‡ na rozwรณj w Kotlinie. Ponadto, jeล›li sฤ… zapisane jakieล› aplikacje Java, wรณwczas moลผna ich uลผywaฤ‡ w ล›rodowisku Kotlina.

Solidne narzฤ™dzia:

Jak Java, kod Kotlina moลผna rรณwnieลผ napisaฤ‡ przy uลผyciu IDE lub interfejsu wiersza poleceล„. Praca z IDE jest ล‚atwa, a bล‚ฤ™dy skล‚adniowe sฤ… rรณwnieลผ znacznie zmniejszone. Jednoczeล›nie, jeล›li pracujesz z interfejsem wiersza poleceล„, kod musi zostaฤ‡ najpierw skompilowany.

Inteligentna obsada:

Inteligentne odlewanie zasadniczo pomaga obniลผyฤ‡ koszty aplikacji i poprawia jej szybkoล›ฤ‡ lub wydajnoล›ฤ‡. Dziaล‚a na zarzฤ…dzaniu wydajnoล›ciฤ… kodu za pomocฤ… rzutowania typรณw lub niezmiennych wartoล›ci.

Na przykล‚ad, jeล›li ciฤ…g znakรณw zostanie zidentyfikowany, jego dล‚ugoล›ฤ‡ i liczba zostanฤ… znalezione za pomocฤ… funkcji Smart Cast:

Val string1: Any = "Today is Monday"
when(string1)
{
is String  -> string1.length
Is Int -> string1.inc()
}

Niski koszt adopcji:

Kotlin jest preferowany przez przedsiฤ™biorstwa ze wzglฤ™du na utracone koszty wdroลผenia. Co najwaลผniejsze, programiล›ci mogฤ… go ล‚atwo siฤ™ nauczyฤ‡, zwล‚aszcza jeล›li majฤ… doล›wiadczenie w programowaniu.

Konfiguracja ล›rodowiska Kotlin

Poniลผej przedstawiono kroki, ktรณre pomogฤ… Ci skonfigurowaฤ‡ ล›rodowisko robocze poprzez instalacjฤ™ jฤ™zyka Kotlin.

Krok 1) Zainstaluj Java

Jak wspomnieliล›my wczeล›niej, na czym opiera siฤ™ Kotlin Java, wiฤ™c musisz zainstalowaฤ‡ Java pierwszy, gdy planujesz przyjฤ™cie Kotlina. Zapoznaj siฤ™ z naszymi Java Samouczek instalacji.

Krok 2) Zainstaluj Java IDE

Na szczฤ™ล›cie jest ich wiele Java IDE do wybrania z. Tutaj podaliล›my linki do pobierania, aby uล‚atwiฤ‡ Ci pracฤ™.

W tym samouczku Kotlina bฤ™dziemy uลผywaฤ‡ Eclipse.

Krok 3) Zainstaluj Kotlina

Aby zainstalowaฤ‡ Kotlin w Eclipse, przejdลบ do sekcji Pomoc w Eclipse i kliknij Eclipse Opcja targowa.

Konfiguracja ล›rodowiska Kotlin

Teraz wpisz sล‚owo kluczowe Kotlin w polu wyszukiwania. Kliknij opcjฤ™ Go, aby wyล›wietliฤ‡ wtyczkฤ™. Otrzymasz link do wtyczki Kotlin, musisz zainstalowaฤ‡ wtyczkฤ™ z podanego linku.

Konfiguracja ล›rodowiska Kotlin

Proszฤ™ uruchomiฤ‡ ponownie Eclipse IDE, po zakoล„czeniu instalacji. Ikonฤ™ skrรณtu znajdziesz w prawym gรณrnym rogu Eclipse IDE. Jest to metoda szybkiego dostฤ™pu.

Konfiguracja ล›rodowiska Kotlin

Inny sposรณb uzyskania dostฤ™pu do Kotlina w Eclipse IDE to przejdลบ do Windows, Perspectives, Open Perspectives, a nastฤ™pnie wybierz opcjฤ™ Others. Tutaj moลผesz sprawdziฤ‡ listฤ™ wtyczek zainstalowanych pรณลบniej, jak podano poniลผej.

Konfiguracja ล›rodowiska Kotlin

Po zweryfikowaniu instalacji Kotlina, w nastฤ™pnym kroku stworzymy pierwszy program Kotlin.

Krok 4) Pierwszy program Kotlin

Zacznij od swojego pierwszego projektu w Kotlinie. Z menu Plik wybierz opcjฤ™ Nowy, nastฤ™pnie wybierz inne i rozpocznij od nowego projektu Kotlin z listy.

Konfiguracja ล›rodowiska Kotlin

Teraz musisz zdefiniowaฤ‡ nazwฤ™ projektu i jesteล› gotowy do pracy z Kotlinem.

Konfiguracja ล›rodowiska Kotlin

Dziฤ™ki tym prostym krokom pobieranie jest ล‚atwe Eclipse i Kotlin w swoim systemie i od razu napisz swรณj pierwszy program w Kotlinie.

Archiarchitekturฤ™ Kotlina

Dobrze zbudowana architektura jest waลผna dla aplikacji, aby skalowaฤ‡ jej funkcje i speล‚niaฤ‡ oczekiwania bazy uลผytkownikรณw koล„cowych. Kotlin ma swojฤ… wล‚asnฤ…, szczegรณlnฤ… i charakterystycznฤ… architekturฤ™, aby przydzieliฤ‡ pamiฤ™ฤ‡ i uzyskaฤ‡ wysokiej jakoล›ci wyniki dla programistรณw i uลผytkownikรณw koล„cowych.

Coroutines i klasy Kotlina tworzฤ… rdzeล„ w taki sposรณb, aby produkowaฤ‡ mniej szablonowego kodu, zwiฤ™kszaฤ‡ wydajnoล›ฤ‡ i wzmacniaฤ‡ efektywnoล›ฤ‡. Istnieje wiele scenariuszy, w ktรณrych kompilator Kotlina moลผe reagowaฤ‡ inaczej, zwล‚aszcza gdy przeznacza rรณลผne rodzaje jฤ™zykรณw.

Archiarchitekturฤ™ Kotlina
Archiarchitekturฤ™ Kotlina

Na schemacie architektury wyraลบnie widaฤ‡, ลผe wykonanie kodu odbywa siฤ™ w trzech prostych krokach.

  1. W pierwszym kroku do kompilatora dodawany jest plik โ€ž.ktโ€ lub kotlin.
  2. W drugim kroku kompilator Kotlina konwertuje kod na kod bajtowy.
  3. W trzecim kroku wstawiany jest kod bajtowy Java Maszyna wirtualna i wykonywane przez JVM.

Gdy kilka plikรณw zakodowanych bajtowo dziaล‚a na JVM, rozpoczyna siฤ™ miฤ™dzy nimi wzajemna komunikacja, dlatego w Kotlinie powstaล‚a funkcja o nazwie interoperacyjnoล›ฤ‡ dla jฤ™zyka Java.

Wydarzenie Kotlina do JavaSkrypt jest wykonywany, gdy Kotlin jest celem JavaScenariusz.

Podczas JavaWybrano cel skryptu, a nastฤ™pnie rozlano caล‚y kod Kotlina, ktรณry jest czฤ™ล›ciฤ… biblioteki obsล‚ugujฤ…cej Kotlin. JavaSkrypt. Jednakลผe, Java Wykluczony jest Development Kit (JDK) i wszelkie biblioteki Java.

Plik inny niลผ Kotlin nie jest brany pod uwagฤ™ podczas takiej operacji. Podczas celowania JavaPlik skryptu .kt jest konwertowany do ES5.1 przez kompilator Kotlin w celu wygenerowania spรณjnego kodu dla JavaSkrypt. Kompilator Kotlin dฤ…ลผy do uzyskania optymalnego rozmiaru wyjล›cia, wspรณล‚dziaล‚ania z istniejฤ…cym moduล‚em, takiej samej funkcjonalnoล›ci jak biblioteka standardowa i wyjล›cia, ktรณre jest JavaSkrypt czytelny.

Z dyskusji jasno wynika, ลผe โ€‹โ€‹kompilatory Kotlin mogฤ… stworzyฤ‡ bardziej wydajny, kompetentny i niezaleลผny kod, ktรณry dodatkowo skutkuje wysoce wydajnym oprogramowaniem.

Zmienna Kotlina

Zmienne sล‚uลผฤ… do przechowywania danych, ktรณrymi moลผna manipulowaฤ‡ i odwoล‚ywaฤ‡ siฤ™ do nich w programie. Zasadniczo jest to jednostka przechowujฤ…ca dane i etykietujฤ…ca, ktรณra oczekuje na alias objaล›niajฤ…cy, dziฤ™ki czemu program jest prosty do odczytania i ล‚atwy do zrozumienia. Innymi sล‚owy, moลผemy powiedzieฤ‡, ลผe zmienne sฤ… pojemnikami do gromadzenia informacji.

W Kotlinie wszystkie zmienne powinny byฤ‡ zadeklarowane. Jednak jeล›li jakaล› zmienna nie jest zadeklarowana, to wyskakuje bล‚ฤ…d skล‚adniowy. Ponadto deklaracja zmiennej okreล›la typ danych, ktรณre pozwalamy przechowywaฤ‡ w zmiennej. W Kotlinie zmienne moลผna definiowaฤ‡ za pomocฤ… sล‚รณw kluczowych val i var. Oto skล‚adnia deklarowania zmiennych w Kotlinie:

Var day = "Monday"
Var number = 3

Tutaj zadeklarowaliล›my lokalnฤ… zmiennฤ… dzieล„, ktรณrej wartoล›ฤ‡ to โ€žMonday' i ktรณrego typ to String oraz inna zmienna lokalna o wartoล›ci 3 i ktรณrej typ to Int, poniewaลผ tutaj literaล‚ jest typu caล‚kowitego, czyli 3.

Zmienne lokalne sฤ… zazwyczaj deklarowane i inicjowane jednoczeล›nie. Moลผemy rรณwnieลผ wykonywaฤ‡ pewne operacje podczas inicjowania zmiennej Kotlin.

Moลผemy wykonaฤ‡ operacjฤ™ na zmiennej tego samego typu danych, jak tutaj num1 i num2 oba sฤ… tego samego typu danych, czyli Int, podczas gdy day jest typu danych string. Ergo, wyล›wietli bล‚ฤ…d. Oto kolejna technika, jak moลผna definiowaฤ‡ zmienne w Kotlin.

var day : String = "GURU99"
var num : Int = 100

Zobaczmy, jak sล‚owa kluczowe var i val rรณลผniฤ… siฤ™ od siebie.

Rรณลผnorodnoล›ฤ‡:

Var jest jak zmienna ogรณlna uลผywana w dowolnym jฤ™zyku programowania, ktรณrej moลผna uลผywaฤ‡ wielokrotnie w jednym programie. Co wiฤ™cej, moลผesz zmieniฤ‡ jego wartoล›ฤ‡ w dowolnym momencie w programie. Dlatego nazywa siฤ™ jฤ… zmiennฤ… zmiennฤ….

Oto przykล‚ad zmiennej zmiennej w Kotlinie:

var num1 = 10
Var num2 = 20
Num1 = 20
print(num1 + num2) // output : 40

Tutaj wartoล›ฤ‡ num1, czyli 20, zostaje nadpisana przez poprzedniฤ… wartoล›ฤ‡ num1, czyli 10. Dlatego wyjล›ciem num1 + num2 jest 40 zamiast 30.

Wartoล›ฤ‡:

Val jest jak staล‚a zmienna i nie moลผna zmieniฤ‡ jej wartoล›ci pรณลบniej w programie, ktรณrej nie moลผna przypisaฤ‡ wielokrotnie w jednym programie i moลผna jej uลผyฤ‡ tylko raz w konkretnym programie. Ergo, jest znana jako zmienna niezmienna.

Oto przykล‚ad programu Kotlin z niezmiennymi zmiennymi w Kotlinie:

Val num1 = 10
Var num2 = 20

W tym przypadku wartoล›ฤ‡ num1 wynoszฤ…ca 10 nie moลผe zostaฤ‡ zastฤ…piona nowฤ… wartoล›ciฤ… num1 wynoszฤ…cฤ… 20, poniewaลผ jest to typ val, ktรณry jest staล‚y. Dlatego wynik wynosi 30 zamiast 40.

Note: W Kotlinie zmienne niezmienne sฤ… preferowane w stosunku do zmiennych zmiennych.

Typy danych w Kotlinie

Typy danych to zbiรณr powiฤ…zanych wartoล›ci i opis operacji, ktรณre moลผna na nich wykonaฤ‡. Podobnie jak inne jฤ™zyki programowania, Kotlin ma rรณwnieลผ swรณj predefiniowany zestaw typรณw danych, takich jak Int, Boolean, Char, Double, itp.

W Kotlinie kaลผdy typ danych jest traktowany jako obiekt.

Teraz w tym podstawowym samouczku Kotlina przyjrzyjmy siฤ™ bliลผej predefiniowanym typom danych uลผywanym w Kotlinie.

Numbers :

Kotlin obsล‚uguje zestaw wbudowanych typรณw danych znanych jako liczby, ktรณre sฤ… podkategoriami liczb caล‚kowitych i liczb zmiennoprzecinkowych Numbers.

Liczby caล‚kowite:

Liczby caล‚kowite to kategoria liczb obejmujฤ…ca cztery typy:

Typ Rozmiar (bity) Wartoล›ฤ‡ minimalna maksymalna wartoล›ฤ‡
Bajt 8 -128 127
Short 16 -32768 32767
Int 32 -2,147,483,648 (-231) 2,147,483,647 (231โ€“1)
dล‚ugo 64 -9,223,372,036,854,775,808 (-263) 9,223,372,036,854,775,807 (263โ€“1)

Punkt zmiennoprzecinkowy Numbers :

Punkt zmiennoprzecinkowy Numbers sฤ… liczbami niecaล‚kowitymi, ktรณre posiadajฤ… pewne wartoล›ci dziesiฤ™tne.

Float: Float to 32-bitowa wartoล›ฤ‡ zmiennoprzecinkowa o pojedynczej precyzji.

Przykล‚ad: var: Float x = 3.25600

Double: Double jest 64-bitowฤ… wartoล›ciฤ… zmiennoprzecinkowฤ… podwรณjnej precyzji.

Przykล‚ad: zmienna: Double y = 2456.345587

Wartoล›ci logiczne:

Typ danych Booleans w Kotlinie jest istotny do reprezentowania wartoล›ci logicznych. Istniejฤ… tylko dwie moลผliwe wartoล›ci w formacie Boolean: prawda lub faล‚sz.

Na przykล‚ad: val dzieล„ = prawda

Val dzieล„2 = faล‚sz

Postaฤ‡ :

Znaki w Kotlinie sฤ… reprezentowane za pomocฤ… sล‚owa kluczowego o nazwie char. W Kotlinie pojedyncze cudzysล‚owy oznaczajฤ… deklaracjฤ™ char. W Javie char sฤ… czasami uลผywane jako liczby, co nie jest moลผliwe w Kotlinie.

Na przykล‚ad:

val onechar = 'x'
print(onechar) //  output : x
Val onedigit = '7'
print(onedigit) // output : 7

Konwersja typu Kotlin lub rzutowanie typu Kotlin

Konwersja typu to procedura konwersji jednego typu zmiennej danych na zmiennฤ… innego typu danych. Jest to niezwykle znane rรณwnieลผ jako odlewanie typรณw.

Wybitnie, w Java, obsล‚ugiwany jest niejawny typ konwersji typu lub niejawny typ rzutowania mniejszego typu danych na wiฤ™kszy typ danych.

For Example : int abc = 15;
Long bcd = abc; // compiles successfully

Jednak w Kotlin niejawna konwersja mniejszego typu danych na wiฤ™kszy typ danych nie jest w ogรณle obsล‚ugiwana, poniewaลผ typu danych int nie moลผna poล›rednio przekonwertowaฤ‡ na dล‚ugi typ danych.

For Example : var abc = 15
Val bcd : Long = abc // error

Jednak w Kotlinie konwersja typรณw odbywa siฤ™ jawnie. Oto wskazรณwki dotyczฤ…ce funkcji pomocniczych, ktรณre kierujฤ… konwersjฤ… jednego typu danych na inny.

Istniejฤ… pewne funkcje pomocnicze, ktรณre sฤ… wstฤ™pnie przygotowane do konwersji jednego typu danych na inny:

doInt()

doByte()

doShort()

doChar()

za dล‚ugo()

unosiฤ‡()

doDouble()

For Example : var abc = 15
Val bcd : Long = abc.toLong() // compiles successfully

Kotlin Operatorsy

Operatory to waลผne i specjalne znaki lub symbole, ktรณre zapewniajฤ… operacje na operandach, ktรณre majฤ… zmienne i wartoล›ci. W Kotlinie istnieje zestaw operatorรณw, ktรณre sฤ… uลผywane w rรณลผnych operacjach, takich jak operacje arytmetyczne, operacje przypisania, operacje porรณwnania itp.

Arytmetyka Operatory:

Operatory arytmetyczne sล‚uลผฤ… do dodawania, odejmowania, mnoลผenia, dzielenia i modulo.

OperaTor Znaczenie
+ Dodawanie (uลผywane rรณwnieลผ do ล‚ฤ…czenia ciฤ…gรณw)
- Odejmowanie OperaTor
* Mnoลผenie OperaTor
/ podziaล‚ OperaTor
% Moduล‚ OperaTor

Na przykล‚ad:

var x = 10
var y = 20
var z = ( ( x + y ) * ( x + y ) ) / 2     

Wynik poniลผszego kodu wynosi 45.

Porรณwnanie Operatory:

Operator porรณwnania sล‚uลผy do porรณwnywania dwรณch wartoล›ci, dwรณch zmiennych lub dwรณch liczb. Uลผywa siฤ™ go z symbolem wiฤ™kszym niลผ ( > ), mniejszym niลผ ( < ) i rรณwnym symbolem ( == ), nierรณwnym symbolem ( != ), wiฤ™kszym niลผ rรณwnym symbolem ( >= ), mniejszym niลผ rรณwnym symbolem ( <= ). Zawsze daje wynik true lub false.

Na przykล‚ad:

var x = 10
Var y =20
Var z = x < y // Output : true
Var w = x > y // Output : false
Var m = x == y // Output : false

Cesja Operatory:

Cesja Operatory sล‚uลผฤ… do przypisywania wartoล›ci operowanych arytmetycznie. Uลผywa siฤ™ ich z symbolami takimi jak +=, -=, *=, /=, %=.

Na przykล‚ad:

var x = 10
var y = 20
var x + = y // Output : 30
Var y - = x // Output : 10
Var x * = y // Output : 200

Zwiฤ™kszanie i zmniejszanie Operatory:

Operatory inkrementacji i dekrementacji sล‚uลผฤ… do inkrementacji i dekrementacji wartoล›ci zmiennej lub liczby. Sฤ… uลผywane z pomocฤ… symboli takich jak ++ i โ€”.

Istniejฤ… dwa rodzaje inkrementacji i dekrementacji: przedinkrementacja ++a, postinkrementacja a++, przed dekrementacjฤ… โ€“b, po dekrementacji bโ€“.

Na przykล‚ad:

var a = 10
var b = 20
var c = a++ // Output: 11
var d = bโ€” //Output : 19     

Tablice Kotlina

Tablica to jednorodny zestaw typรณw danych i jest jednym z najbardziej podstawowych typรณw danych, ktรณry sล‚uลผy do przechowywania tego samego typu danych w ciฤ…gล‚ej lokalizacji pamiฤ™ci. Tablica ma istotne znaczenie dla organizacji danych w dowolnym jฤ™zyku programowania, dziฤ™ki czemu wiele danych przechowywanych w jednym miejscu moลผna ล‚atwo wyszukiwaฤ‡ i sortowaฤ‡.

W Kotlinie tablice sฤ… zmiennฤ… wspรณล‚pracฤ… tych samych typรณw danych, a nie natywnymi typami danych.

Oto pewne wล‚aล›ciwoล›ci tablicy w Kotlinie

  • Po zadeklarowaniu rozmiaru tablicy nie moลผna zmieniฤ‡.
  • Tablice w Kotlinie sฤ… modyfikowalne.
  • Tablice sฤ… przechowywane w sฤ…siadujฤ…cych lokalizacjach pamiฤ™ci.
  • Dostฤ™p do tablicy moลผna uzyskaฤ‡ za pomocฤ… indeksรณw takich jak a[1], a[2], et โ€“ i tak dalej.
  • Indeks tablicy zaczyna siฤ™ od zera, czyli a[0].

W Kotlinie tablicฤ™ moลผna zdefiniowaฤ‡ na dwie rรณลผne metody

Uลผywajฤ…c funkcji arrayOf() :

W Kotlinie wystฤ™puje duลผe wykorzystanie funkcji bibliotecznych. Jednฤ… z takich funkcji bibliotecznych jest funkcja arrayOf(), ktรณra sล‚uลผy do definiowania tablicy poprzez przekazanie wartoล›ci zmiennych do funkcji.

Na przykล‚ad: Niejawna deklaracja typu tablicy przy uลผyciu funkcji arrayOf().

val x = arrayOf(1,2,3,4,5,6,7,8,9)

Na przykล‚ad: Jawnie wpisz deklaracjฤ™ tablicy, uลผywajฤ…c funkcji arrayOf().

Val y = arrayOf<Int>(1,2,3,4,5,6,7,8,9)

Uลผywajฤ…c konstruktora tablic:

W Kotlinie istnieje klasa o nazwie Array. Dlatego moลผliwe jest uลผycie tablicy konstruktora do utworzenia tablicy. Tablica w konstruktorze zawiera dwa gล‚รณwne parametry.

Jaki jest indeks tablicy w Kotlinie?

Funkcja, w ktรณrej indeks tablicy moลผe zwracaฤ‡ wartoล›ฤ‡ poczฤ…tkowฤ… indeksu.

Na przykล‚ad:

val abc = Array(7 , { i -> i*1})

Tutaj wartoล›ฤ‡ tablicy wynosi 7, a wyraลผenie lambda sล‚uลผy do inicjowania wartoล›ci elementu.

Istniejฤ… rรณwnieลผ rรณลผne metody uzyskiwania dostฤ™pu do tablic i modyfikowania ich przy uลผyciu okreล›lonych funkcji. Dlatego istniejฤ… dwie funkcje skล‚adowe get() i set(), ktรณre sล‚uลผฤ… do uzyskiwania dostฤ™pu do obiektรณw klasy array.

Na przykล‚ad:

val x = arrayOf(10,20,30,40,50,60,70,80,90)
val y = x.get(0) // Output 10

Tutaj wynikiem jest 10, poniewaลผ wartoล›ฤ‡ pod indeksem 0 tablicy wynosi 10

Uwaga: get() przyjmuje tylko pojedyncze wartoล›ci

Na przykล‚ad:

val x = arrayOf(10,20,30,40,50,60,70.80.90)
val y = x.set(2, 3) //

Wyjล›cie: 30 40

Tutaj wynik wynosi 30 i 40, poniewaลผ wartoล›ฤ‡ pod indeksem 2 tablicy wynosi 30, a pod indeksem 3 wynosi 40.

Uwaga: set() przyjmuje wiele wartoล›ci z tablicy.

Struny Kotlina

String to podstawowy typ danych w dowolnym jฤ™zyku programowania. Ciฤ…g znakรณw to nic innego jak ciฤ…g znakรณw. Klasa String reprezentuje ciฤ…gi znakรณw. W Kotlinie wszystkie ciฤ…gi znakรณw sฤ… obiektami klasy String, co oznacza, ลผe โ€‹โ€‹literaล‚y ล‚aล„cuchowe sฤ… implementowane jako instancje klasy.

Skล‚adnia:

 Val myString = "Hey there!"

Kolekcja Kotlina

Kolekcja zawiera kilka obiektรณw podobnego typu, a te obiekty w kolekcji nazywane sฤ… elementami lub elementami. Kolekcja moลผe pomรณc w przechowywaniu, odzyskiwaniu, manipulowaniu i agregowaniu danych.

Rodzaje kolekcji:

Niezmienna kolekcja

Ten typ kolekcji obsล‚uguje funkcje tylko do odczytu. Nie moลผna modyfikowaฤ‡ jego elementรณw.

Metody obejmujฤ…:

  • Lista โ€“ listOf() i listOf ()
  • Zestaw โ€“ setOf()
  • Mapa โ€“ mapOf()

Kolekcja zmienna

Obsล‚uguje zarรณwno funkcjฤ™ odczytu, jak i zapisu.

Metody obejmujฤ…

  • Lista โ€“ mutableListOf(),arrayListOf() i ArrayList
  • Zestaw โ€“ mutableSetOf(), hashSetOf()
  • Mapa โ€“ mutableMapOf(), hashMapOf() i HashMap

Funkcje Kotlina

Funkcje w dowolnym jฤ™zyku programowania to grupa podobnych instrukcji, ktรณre sล‚uลผฤ… do wykonania okreล›lonego zadania. Funkcje pozwalajฤ… programowi podzieliฤ‡ go na rรณลผne maล‚e bloki kodu. Taki podziaล‚ kodu zwiฤ™ksza czytelnoล›ฤ‡ kodu, moลผliwoล›ฤ‡ jego ponownego uลผycia i uล‚atwia zarzฤ…dzanie programem.

Poniewaลผ Kotlin jest znany jako jฤ™zyk o typie statycznym. W tym przypadku sล‚owo kluczowe โ€žfunโ€ sล‚uลผy do deklarowania funkcji. W Kotlinie istniejฤ… dwa typy funkcji, ktรณre zaleลผฤ… wyล‚ฤ…cznie od ich dostฤ™pnoล›ci w standardowej bibliotece lub definicji uลผytkownika. Oni sฤ…:

  • Standardowa funkcja biblioteczna
  • Funkcja zdefiniowana przez uลผytkownika

Funkcja Kotlina

Funkcje Kotlina

Teraz omรณwmy je szczegรณล‚owo na przykล‚adach kodu Kotlina.

Standardowa funkcja biblioteki

Sฤ… to wbudowane funkcje biblioteczne, ktรณre moลผna zdefiniowaฤ‡ niejawnie i ktรณre moลผna wykorzystaฤ‡.

Na przykล‚ad 2:

fun main(args: Array<String>){  
var number = 9  
var result = Math.sqrt(number.toDouble())  
print("$result")  
}  

Wyjล›cie:

3.0

sqrt() to funkcja zdefiniowana w bibliotece, ktรณra zwraca pierwiastek kwadratowy z liczby.

Funkcja print() wypisuje komunikat do standardowego strumienia wyjล›ciowego.

Funkcja zdefiniowana przez uลผytkownika

Jak sama nazwa wskazuje, funkcje te sฤ… zwykle tworzone przez uลผytkownikรณw i moลผna je wykorzystaฤ‡ do zaawansowanego programowania.

Tutaj funkcje deklaruje siฤ™ za pomocฤ… sล‚owa kluczowego โ€žfunโ€.

Na przykล‚ad 3:

fun functionName(){
//body of the code
}

Tutaj wywoล‚ujemy funkcjฤ™, ktรณra uruchamia kody wewnฤ…trz treล›ci funkcjiNazwa()

Przykล‚ady funkcji Kotlina:

fun main(args: Array<String>){  
    sum()  
    print("code after sum")  
}  
fun sum(){  
    var num1 =8  
    var num2 = 9  
    println("sum = "+(num1+num2))  
}  

Wyjล›cie:

suma = 17

kod po sumie

Obsล‚uga wyjฤ…tkรณw w Kotlinie

Wyjฤ…tek w programowaniu definiuje siฤ™ jako problem w czasie wykonywania, ktรณry pojawia siฤ™ w programie i prowadzi do jego zakoล„czenia. Ten problem moลผe wystฤ…piฤ‡ z powodu mniejszej iloล›ci miejsca w pamiฤ™ci, braku wiฤ…zania tablicy lub warunkรณw takich jak dzielenie przez zero. Aby ograniczyฤ‡ tego typu problemy podczas wykonywania kodu, uลผywana jest obsล‚uga wyjฤ…tkรณw.

Obsล‚uga wyjฤ…tkรณw jest definiowana jako technika, ktรณra radzi sobie z problemami w czasie wykonywania, a takลผe utrzymuje przepล‚yw programu podczas jego wykonywania.

Kotlin uลผywa wyraลผenia โ€žthrowโ€, aby zgล‚osiฤ‡ obiekt wyjฤ…tku. Tutaj wszystkie klasy wyjฤ…tkรณw sฤ… potomkami klasy Throwable.

Rzuฤ‡ mรณj wyjฤ…tek (โ€žzgล‚asza wyjฤ…tekโ€)

Istniejฤ… cztery typy wyjฤ…tkรณw w obsล‚udze wyjฤ…tkรณw. Oni sฤ…:

  • try โ€“ ten blok zawiera instrukcje, ktรณre mogฤ… stworzyฤ‡ wyjฤ…tek. Po nim zawsze nastฤ™puje catch, last lub oba.
  • catch โ€“ przechwytuje wyjฤ…tek zgล‚oszony z bloku try.
  • wreszcie โ€“ Zawsze sprawdza, czy wyjฤ…tek zostaล‚ obsล‚uลผony, czy nie.
  • rzut โ€“ sล‚uลผy do jawnego zgล‚aszania wyjฤ…tku.

Prรณbuj zล‚apaฤ‡:

W bloku try-catch w obsล‚udze wyjฤ…tkรณw, blok try otacza kod, ktรณry moลผe zgล‚osiฤ‡ wyjฤ…tek, a blok catch przechwytuje wyraลผenie i obsล‚uguje je.

Skล‚adnia bloku try catch:

try{    
//code with exception    
}catch(e: SomeException){  
//code handling exception  
}    

Skล‚adnia try z final block

try{    
//code with exception    
}finally{  
// code finally block  
}   

Wreszcie:

W Kolin wreszcie block zawsze sprawdza, czy wyjฤ…tek jest obsล‚uลผony, czy nie, co czyni go bardzo waลผnym stwierdzeniem dotyczฤ…cym obsล‚ugi wyjฤ…tkรณw.

Na przykล‚ad 4:

W tym fragmencie kodu wystฤ™puje wyjฤ…tek i jest on obsล‚ugiwany.

fun main (args: Array<String>){  
    try {  	
        val data =  9/ 0  
        println(data)  
    } catch (e: ArithmeticException) {  
        println(e)  
    } finally {  
        println("finally block executes")  
    }  
    println("write next code")  
}  

Wyjล›cie:

java.lang.ArithmeticException: / by zero
finally block executes
write next code

Rzucaฤ‡:

Blok Throw zgล‚asza jawny wyjฤ…tek. Ponadto sล‚uลผy do zgล‚aszania niestandardowych wyjฤ…tkรณw.

Skล‚adnia:

Throw SomeException()

Throw SomeException()

Przykล‚ad:

fun main(args: Array<String>) {
    try{
        println("Exception is not thrown yet")
        throw Exception("Everything is not well")
        println("Exception is thrown")
    }
    catch(e: Exception){
        println(e)

    }
    finally{
        println("You can't ignore me")
    }
}

Wyjล›cie:

Przykล‚ad Kotlina

Bezpieczeล„stwo Kotlina Null

Typy systemรณw obsล‚ugujฤ…cych Kotlin zasadniczo rozrรณลผniajฤ… referencje, ktรณre mogฤ… przenosiฤ‡ referencje dopuszczajฤ…ce wartoล›ฤ‡ null, i te, ktรณre nie mogฤ… przenosiฤ‡ referencji dopuszczajฤ…cych wartoล›ฤ‡ null. Kotlin to jฤ™zyk bezpieczeล„stwa zerowego, majฤ…cy na celu wyeliminowanie wyjฤ…tku wskaลบnika zerowego lub odniesienia zerowego z kodu, ktรณry jest celowo znany jako A BillBล‚ฤ…d dolara.

Najbardziej konwencjonalna przeszkoda z wielu jฤ™zyki programowania jest to, ลผe podczas uzyskiwania dostฤ™pu do czล‚onka referencji null, skutkuje to NullPointerException, co moลผe byฤ‡ spowodowane operatorem !! lub tym konstruktorem uลผytym gdzie indziej i przekazanym w innym punkcie kodu. Wล‚aล›ciwoล›ฤ‡ nullable wymaga potwierdzenia dla sprawdzenia null za kaลผdym razem przed jej wykorzystaniem.

W Kotlinie system rozrรณลผnia referencje zerowe i referencje niezerowe.

Na przykล‚ad zmienna typu String nie moลผe zawieraฤ‡ wartoล›ci null:

Na przykล‚ad 5:

fun main(args: Array<String>){
    var x: String = "GURU99 is the only place where you will get maximum technical content!" // Not Null by default
    println("x is : $x")
    // You cannot assign null variable to not-nullable variables 
    // a=null // it will give compilation error
    var y: String? = "Thanks for visiting GURU99" 
// Nullable Variable
    println("y is : $y")
    y = null
    println("y is : $y")
}

Wyjล›cie:

Bezpieczeล„stwo Kotlina Null

Kotlin OOP

Podejล›cie programowania obiektowego pozwala na podzielenie zล‚oลผonego fragmentu kodu na mniejsze bloki kodu poprzez tworzenie obiektรณw. Obiekty te majฤ… wzajemnie dwie cechy: stan i zachowanie.

Oto niektรณre elementy OOP, ktรณre omรณwimy na przykล‚adach kodu Kotlina:

  • Klasa i obiekty
  • Konstruktorzy
  • Dziedzictwo
  • Klasa abstrakcyjna

Kotlin OOP

Zajฤ™cia w Kotlinie

Najpierw, przed utworzeniem obiektu, musimy zdefiniowaฤ‡ klasฤ™, zwanฤ… takลผe planem obiektu.

Skล‚adnia:

class ClassName {
    // property
    // member function
    ... .. ...
}

Obiekty w Kotlinie

Definiujฤ…c klasฤ™, definiujemy jedynie specyfikacje obiektu, nie przydzielamy ลผadnych innych parametrรณw, takich jak pamiฤ™ฤ‡ czy pamiฤ™ฤ‡.

Skล‚adnia:

var obj1 = ClassName()

Konstruktorzy w Kotlinie

Konstruktor to sposรณb na inicjalizacjฤ™ wล‚aล›ciwoล›ci klasy. Jest to funkcja skล‚adowa wywoล‚ywana podczas tworzenia instancji obiektu. Ale w Kotlinie dziaล‚a to inaczej.

W Kotlinie istniejฤ… dwa typy konstruktorรณw:

Konstruktorzy w Kotlinie

Konstruktorzy w Kotlinie

Gล‚รณwny konstruktor: zoptymalizowany sposรณb inicjowania klasy

Skล‚adnia:

class myClass(valname: String,varid: Int) {  
    // class body  
}  

Konstruktor dodatkowy: pomaga dodaฤ‡ logikฤ™ inicjalizacji

Dziedziczenie Kotlina

Dziedziczenie ma miejsce, gdy niektรณre wล‚aล›ciwoล›ci klasy nadrzฤ™dnej zostajฤ… przejฤ™te przez klasฤ™ podrzฤ™dnฤ…. Dziedziczenie jest dozwolone, gdy dwie lub wiฤ™cej klas ma te same wล‚aล›ciwoล›ci.

Skล‚adnia:

open class ParentClass(primary_construct){
    // common code
  }class ChildClass(primary_construct): ParentClass(primary_construct_initializ){
    // ChildClass specific behaviours
  }

Klasa abstrakcyjna w Kotlinie

Klasa abstrakcyjna to klasa, ktรณrej instancji nie moลผna utworzyฤ‡, ale moลผemy dziedziczyฤ‡ z niej podklasy. Sล‚owo kluczowe โ€žabstractโ€ sล‚uลผy do deklarowania klasy abstrakcyjnej.

Na przykล‚ad 6:

  open class humanbeings { 
    open fun Eat() { 
        println("All Human being Eat") 
    } 
} 
abstract class Animal : humanbeings() { 
    override abstract fun Eat() 
} 
class Cat: Animal(){ 
    override fun Eat() { 
        println("Cats also loves eating") 
    } 
} 
fun main(args: Array<String>){ 
    val lt = humanbeings() 
    lt.Eat() 
    val d = Cat() 
    d.Eat() 
} 

Wyjล›cie:

Klasa abstrakcyjna w Kotlinie

Teraลบniejszoล›ฤ‡ i przyszล‚oล›ฤ‡ Kotlina

Teraลบniejszoล›ฤ‡:

  • Wiele firm lubi Netflix, Pinterest i Corda uลผywajฤ… Kotlina do tworzenia potฤ™ลผnych treล›ci Android aplikacje.
  • W ciฤ…gu krรณtkiego roku, od 2016 do 2017 roku, Kotlin staล‚ siฤ™ bardzo popularny dziฤ™ki niesamowitym funkcjom programistycznym.
  • W 2017 roku Google ogล‚osiล‚o, ลผe Kotlin jest oficjalnym jฤ™zykiem programowania dla systemu Android.
  • Moลผesz szybko wymieniฤ‡ Java kod w Kotlinie, poniewaลผ jest on w 100% kompatybilny z Java oraz Android.

Przyszล‚oล›ฤ‡:

  • Tworzenie gier wieloplatformowych
  • Tworzenie wieloplatformowych aplikacji mobilnych
  • Skrypty po stronie usล‚ugi i mikrousล‚ugi
  • Nauczanie maszynowe & analiza danych

Podsumowanie

  • Kotlin to jฤ™zyk programowania zaproponowany przez JetBrains w 2010 roku dla aplikacji wieloplatformowych na licencji Apache 2.0.
  • Nazwa Kotlin pochodzi od nazwy wyspy Kotlin w podobnej korespondencji Java od nazwy wyspy o nazwie Jawa.
  • W 2016 roku wypuszczono pierwszฤ… wersjฤ™ Kotlina v1.0
  • Programy Kotlin nie wymagajฤ… ล›rednikรณw w swoim programie. Dziฤ™ki temu kod jest ล‚atwiejszy i bardziej czytelny.
  • Kotlina za Android programiล›ci to jฤ™zyk programowania oparty na OOP, w ktรณrym liniฤ™ kodu moลผna przyciฤ…ฤ‡ nawet o 40%, co czyni Kotlin idealnym wyborem do tworzenia oprogramowania lub stron internetowych.
  • W Kotlinie wszystkie zmienne naleลผy deklarowaฤ‡ za pomocฤ… sล‚รณw kluczowych var i val.
  • Podobnie jak inne jฤ™zyki programowania, Kotlin ma rรณwnieลผ swรณj predefiniowany zestaw typรณw danych, takich jak Int, Boolean, Char, Double, itp.
  • W jฤ™zyku Kotlin istnieje zestaw operatorรณw wykorzystywanych w rรณลผnych operacjach, takich jak dziaล‚ania arytmetyczne, operacje przypisania, operacje porรณwnywania itp.
  • W Kotlinie tablice sฤ… zmiennฤ… wspรณล‚pracฤ… tych samych typรณw danych, a nie natywnymi typami danych.
  • W Kotlinie tablice definiuje siฤ™ za pomocฤ… dwรณch metod โ€“ ArrayOF() i Constructors.
  • Kotlin to jฤ™zyk bezpieczeล„stwa zerowego, ktรณry pomaga usunฤ…ฤ‡ wyjฤ…tek wskaลบnika zerowego lub odwoล‚anie zerowe z kodu, ktรณry jest celowo nazywany A BillBล‚ฤ…d dolara.

Podsumuj ten post nastฤ™pujฤ…co: