Kotlin er et moderne programmeringsspråk som kompilerer til Java bytecode. Det er gratis og åpen kildekode, og lover å gjøre koding for Android enda morsommere.
Kotlin er 100% kompatibelt med Java. Med andre ord kan den brukes sammen med Java i samme prosjekt. Så du kan refactor deler av Java-koden til Kotlin, og det vil ikke bryte. I tillegg til det er det kortfattet, uttrykksfulle og har gode verktøy. Kotlin kan brukes på back-end (server-side), men det blir mye oppmerksomhet akkurat nå som et språk for Android app utvikling. Kotlin støttes nå av Google som et førsteklasses språk for Android-utvikling, så Kotlins popularitet er satt til å eksplodere!
I denne første opplæringen i Kotlin From Scratch-serien lærer du om språkkunnskapene: kommentarer, variabler, enkle typer, arrays og type inferanser.
For å følge med meg, trenger du Kotlin-pluginet på Android Studio. Alternativt kan du bruke den elektroniske lekeplassen eller IntelliJ IDEA Community Edition.
I Kotlin, bruk val
å erklære en konstant eller Var
søkeord for å erklære en variabel. Du kan spesifisere en type som string
eller int
etter variabelnavnet. I eksemplet nedenfor erklærte vi en konstant fornavn
av type string
med val
søkeord.
val firstName: String = "Chike"
Men du vil snart innse at i Kotlin er det ofte mulig å utelate typen fra erklæringen og kompilatoren vil ikke klage.
val lastName = "Mgbemena" // vil fortsatt kompilere
I koden ovenfor vil du observere at vi ikke oppgav eksplisitt typen string
. Koden ovenfor vil fortsatt fungere fordi kompilatoren har implisitt avledet typen ved hjelp av typegodkjenning. Vi kommer tilbake til dette!
Forskjellen mellom val
og Var
søkeord er at den tidligere er uforanderlig eller skrivebeskyttet (verdien kan ikke endres), mens sistnevnte er mutable (verdien kan endres).
val dateOfBirth = "29. mars, 1709" dateOfBirth = "25. desember, 1600" // kan ikke endres var car = "Toyota Matrix" bil = "Mercedes-Maybach" // kan endres
Merk at for en variabel som er deklarert med Var
Søkeord som har sin type avledet av kompilatoren, vil ikke tildele en annen verdi av en annen type. Med andre ord, verdien av variabelen kan endres, men typen kan ikke! For eksempel:
var alder = 12 alder = "12 år gammel" // Feil: skriv feilaktighet
Det anbefales sterkt at du begynner med å gjøre variablene uforanderlige ved å erklære dem med val
søkeord, for ikke å vedlikeholde for mange stater. Dette gjør koden din tryggere for multithreading, fordi den sikrer at variablene dine ikke kan endres av andre tråder uventet.
En annen ting du bør vite om val
Søkeordet er at du kun kan deklarere det med en type og tildele det en verdi senere. Men du kan fortsatt bare tildele en verdi en gang.
Val carName: String carName = "Toyota Matrix" // vil kompilere
I Java er det mulig å erklære flere variabler av samme type på en enkelt linje, men dette virker ikke i Kotlin. I Kotlin må alle variabeldeklarasjoner være på egne linjer.
val carName = "BMW", streetName = "Oke street" // dette vil ikke kompilere // dette vil kompilere var carName = "BMW" var streetName = "Oke street"
Kotlin er et sterkt skrevet språk som støtter typegodkjenning eller fradrag. Dette er mekanismen som brukes av kompilatoren for å finne ut typer fra kontekst. Java har ikke en type innledningsmekanisme, noe som betyr at du må eksplisitt deklarere typen av hver funksjon eller variabel. Type inference bidrar til å redusere boilerplate koden du må skrive.
val country = "Nigeria" // type er utledet av kompilator valkode = 234
Koden ovenfor ville kompilere, selv om vi ikke angav eksplisitt typen for det variable landet. Kompilatoren er smart nok til å vite at landet er av typen string
, fordi verdien, "Nigeria", er en streng.
I Java har vi to typer type-primitive (for eksempel int, lang, boolean, byte, kar, etc.) og referansetyper (for eksempel array, string
). Java bruker wrappers (som java.lang.Integer
) for å gjøre primitive typer oppføre seg som objekter. Men i Kotlin er det ikke noe slikt skille. I stedet er alle typer objekter.
De heltalltyper som er tilgjengelige i Kotlin er:
Lang
-64 bitint
-32 bitKort
-16 bitbyte
-8 bitDe flytende punkttyper er:
Dobbelt
-64 bitFlyte
-32 bitval myInt = 55 val myLong = 40L val myFloat = 34.43F val myDouble = 45.78 val myHexadecimal = 0x0F val myBinary = 0b010101
Du kan observere at vi opprettet en Lang
bokstavelig ved å legge til suffikset L
, og for Flyte
vi la til suffikset F
eller f
. Tall kan også skrives i heksadesimale notater ved hjelp av 0x
eller 0X
prefiks og i binær bruk av 0B
eller 0B
prefiks. Vær oppmerksom på at i alle disse tilfellene kan Kotlin bruke typen inngang for å vite hvilken type vi vil i stedet.
val myLong = 19L val myLongAgain: Long = 40
For å konvertere et tall fra en type til en annen, må du eksplisitt påkalle den tilsvarende konverteringsfunksjonen. Det er med andre ord ingen implisitt konvertering mellom typer tall.
val myNumber = 400 val myNumberAgain: Long = myNumber // kaster Feil: Skriv feilaktighet
Hver nummertype har hjelpefunksjoner som konverterer fra en nummertype til en annen: toByte ()
, toInt ()
, Tolong ()
, å flyte()
, toDouble ()
, toChar ()
, toShort ()
.
val myInt = 987 val myLong = myInt.toLong ()
I koden ovenfor konverterer vi fra et helt tall til en lang. Vi kan også gjøre omvendt ved å bruke metoden toInt ()
på den lange variabelen. Merk at dette vil avkorte verdien slik at den passer til den mindre størrelsen på en int
skriv om nødvendig, vær så forsiktig når du konverterer fra større typer til mindre!
Du kan også konvertere a string
inn i en talltype.
val stringNumber = "101" val intValue = stringNumber.toInt ()
I koden ovenfor konverterte vi variabelen stringNumber
inn i en int
skriv inn ved å ringe metoden toInt ()
på variabelen. Vi kan skrive dette mer kortfattet ved å ringe metoden direkte på strengen:
val intValue = "101" .toInt ()
De boolean
skriv inn Kotlin er det samme som i Java. Verdien kan være enten sant eller falskt. Operasjonen disjunction (||
), sammenheng (&&
), og negasjon (!
) kan utføres på boolske typer, akkurat som Java.
val myTrueBoolean = sann val myFalseBoolean = falsk val x = 1 val y = 3 val w = 4 val z = 6 val n = x < z && z > w / n er sant
Strings kan opprettes med enten dobbelte sitater eller tredobbelte sitater. I tillegg til dette kan fluktegnene brukes med to sitater.
val myString = "Dette er en streng" val escapeString = "Dette er en streng med ny linje \ n"
For å lage en streng som spenner over flere linjer i kildefilen, bruker vi trippel sitater:
val multipleStringLines = "" "Dette er første linje Dette er andre linje Dette er tredje linje" ""
Kotlin støtter også strenginterpolering eller strengmaler. Dette er en enklere måte å bygge dynamiske strenger enn sammenkobling, som er det vi bruker i Java. Ved hjelp av strengmaler kan vi sette inn variabler og uttrykk i en streng.
val accountBalance = 200 val bankMessage = "Kontosaldoen din er $ accountBalance" // Kontosaldoen din er 200
I koden ovenfor skapte vi en streng bokstavelig, og innenfor det refererte vi til en variabel ved bruk av a $
tegn foran variabelnavnet. Merk at hvis variabelen ikke er riktig eller ikke eksisterer, vil koden ikke kompilere.
Hva med om du trenger å bruke $
i strengen din? Du unnslipper det med \ $
! Du kan også ringe metoder fra en interpolert string
direkte; du må legge krøllete braces $
å pakke den inn.
val name = "Chike" val message = "Den første bokstaven i navnet mitt er $ name.first ()" // Det første bokstaven i mitt navn er C
En annen kul ting du kan gjøre er å utføre noen logikk inne i de krøllete bøylene når du lager en string
bokstavelig.
val age = 40 val anotherMessage = "Du er $ hvis (alder> 60)" gammel "ellers" ung "" // Du er ung
I Kotlin er det to hovedmåter å opprette en matrise: ved hjelp av hjelperfunksjonen et utvalg av()
eller konstruktøren Array ()
.
et utvalg av()
FunksjonFor eksempel, la oss lage en matrise med noen elementer ved hjelp av et utvalg av()
.
val myArray = arrayOf (4, 5, 7, 3)
Nå, for å få tilgang til noe av elementet, kan vi bruke indeksen: myArray [2]
. Vær oppmerksom på at vi kan overføre verdier av forskjellige typer til et utvalg av()
Som argumenter og det vil fortsatt fungere - det vil være en rekke blandede typer.
val myArray = arrayOf (4, 5, 7, 3, "Chike", false)
For å håndheve at alle arrayverdiene har samme type, f.eks. int
, Vi erklærer en type ved å ringe et utvalg av
eller intArrayOf ()
.
val myArray3 = arrayOf(4, 5, 7, 3, "Chike", false) // vil ikke kompilere val myArray4 = intArrayOf (4, 5, 7, 3, "Chike", false) // vil ikke kompilere
Vi har også andre bruksfunksjoner for å lage arrays av andre typer som charArrayOf ()
, booleanArrayOf ()
, longArrayOf ()
, shortArrayOf ()
, byteArrayOf ()
, og så videre. Bak kulissene, vil bruk av disse funksjonene skape et utvalg av deres respektive Java-primitive typer. Med andre ord, intArrayOf ()
vil kompilere til den vanlige java primitive typen int []
, byteArrayOf ()
vil være byte []
, longArrayOf ()
vil være lang[]
, og så videre.
Array ()
ConstructorLa oss nå se hvordan du lager en matrise med Array ()
. Konstruktøren i denne klassen krever en størrelse og en lambda-funksjon. Vi lærer mer om lambda-funksjoner senere i denne serien, men for nå forstår bare at det er en enkel, inline måte å erklære en anonym funksjon. I dette tilfellet er jobben med lambda-funksjonen å initialisere arrayet med elementer.
val numbersArray = Array (5, i -> i * 2)
I koden ovenfor passerte vi 5 som størrelsen på arrayet i det første argumentet. Det andre argumentet tar i en lambda-funksjon, som tar indeksen til array-elementet, og returnerer deretter verdien som skal settes inn i den indeksen i arrayet. Så i eksemplet ovenfor opprettet vi en matrise med elementer 0, 2, 4, 6 og 8.
Dette er en enkel en. I Kotlin er kommentarer akkurat det samme som i Java. Vi kan enten bruke blokk eller linje kommentarer:
/ * hei, dette er en blokkkommentar med flere linjer. Dette er en annen linje. Dette er en annen igjen * / // dette er en enkelt linje kommentar
I denne opplæringen lærte du grunnleggende om Kotlins programmeringsspråk: variabler, grunnleggende typer, type inferanse, arrayer og kommentarer. I neste opplæring i Kotlin From Scratch-serien lærer du om looper, intervaller, betingelser, samlinger og pakker i Kotlin. Ser deg snart!
For å lære mer om Kotlin-språket, anbefaler jeg at du besøker Kotlin-dokumentasjonen. Eller sjekk ut noen av våre andre Kotlin-opplæringsprogrammer her på Envato Tuts+.