Kotlin är ett modernt programmeringsspråk som kompilerar till Java bytecode. Det är gratis och öppen källkod, och lovar att göra kodning för Android ännu roligare.
Kotlin är 100% kompatibelt med Java. Med andra ord kan den användas tillsammans med Java i samma projekt. Så du kan refactor delar av din Java-kod till Kotlin och det kommer inte att brytas. Utöver det är det kortfattat, uttrycksfullt och har bra verktyg. Kotlin kan användas i back-end (server-sida), men det blir mycket uppmärksamhet just nu som ett språk för Android app utveckling. Kotlin stöds nu av Google som ett förstklassigt språk för Android-utveckling, så Kotlins popularitet kommer att explodera!
I den här första handledningen i Kotlin From Scratch-serien lär du dig information om språkens grunder: kommentarer, variabler, enkla typer, arrayer och typinferens.
För att följa med mig behöver du Kotlin-plugin på Android Studio. Alternativt kan du använda online-lekplatsen eller IntelliJ IDEA Community Edition.
I Kotlin, använd val
att deklarera en konstant eller var
nyckelord för att deklarera en variabel. Du kan ange en typ som Sträng
eller int
efter variabelnamnet. I exemplet nedan förklarade vi en konstant förnamn
av typ Sträng
med val
nyckelord.
val firstName: String = "Chike"
Men du kommer snart inse att i Kotlin är det ofta möjligt att släppa ut typen från deklarationen och kompilatorn inte klagar.
val lastName = "Mgbemena" // kommer fortfarande att kompilera
I koden ovan kommer du att observera att vi inte uttryckligen angav typen Sträng
. Koden ovan kommer fortfarande att fungera eftersom kompilatorn implicit har utgått från typen med typinferens. Vi kommer tillbaka till det här!
Skillnaden mellan val
och var
nyckelord är att den tidigare är oföränderlig eller skrivskyddad (dess värde kan inte ändras), medan den senare är mutabel (dess värde kan ändras).
val dateOfBirth = "29 mars, 1709" dateOfBirth = "25 December 1600" // kan inte ändras var car = "Toyota Matrix" bil = "Mercedes-Maybach" // kan ändras
Notera att för en variabel som deklarerats med var
sökord som har sin typ av utgångspunkt från kompilatorn, kommer att tilldela ett annat värde av en annan typ inte fungera. Med andra ord kan värdet av variabeln ändras, men dess typ kan inte! Till exempel:
var ålder = 12 år gammal = "12 år gammal" // Fel: typ mismatch
Det rekommenderas starkt att du börjar med att göra dina variabler oföränderliga genom att deklarera dem med val
sökord, för att inte behålla för många stater. Detta gör din kod säkrare för multithreading, eftersom det säkerställer att dina variabler inte kan ändras av andra trådar oväntat.
En annan sak du borde veta om val
nyckelordet är att du kan deklarera det med en typ bara och tilldela det ett värde senare. Men du kan fortfarande bara tilldela ett värde en gång.
val carName: String carName = "Toyota Matrix" // kommer att kompilera
I Java är det möjligt att deklarera flera variabler av samma typ på en enda rad, men detta fungerar inte i Kotlin. I Kotlin måste alla variabla deklarationer vara egna.
val carName = "BMW", streetName = "Oke street" // det här kommer inte att kompilera // det här kommer att kompilera var carName = "BMW" var streetName = "Oke street"
Kotlin är ett starkt skrivet språk som stöder typinferens eller avdrag. Detta är den mekanism som används av kompilatorn för att ta reda på typer från kontext. Java har ingen typinferensmekanism, vilket innebär att du måste uttryckligen deklarera typen av varje funktion eller variabel. Typinferens hjälper till att minska kedjekodskoden du måste skriva.
val country = "Nigeria" // typ avledes av kompilatorns valkod = 234
Koden ovan skulle kompilera trots att vi inte uttryckligen angav typen för det variabla landet. Kompilatorn är smart nog att veta att landet är av typ Sträng
, eftersom värdet "Nigeria" är en sträng.
I Java har vi två typer av typ-primitiva (t ex int, lång, booleskt, byte, char, etc.) och referenstyper (t ex array, Sträng
). Java använder wrappers (som java.lang.Integer
) för att göra primitiva typer uppför sig som föremål. Men i Kotlin finns ingen sådan skillnad. Istället är alla typer objekt.
Heltalstyperna som finns i Kotlin är:
Lång
-64 bitarint
-32 bitarKort
-16 bitarbyte
-8 bitarDe flytande punkterna är:
Dubbel
-64 bitarFlyta
-32 bitarval myInt = 55 val myLong = 40L val myFloat = 34.43F val myDouble = 45.78 val myHexadecimal = 0x0F val myBinary = 0b010101
Du kan observera att vi skapade en Lång
bokstavligt genom att lägga till suffixet L
, och för Flyta
vi lade till suffixet F
eller f
. Nummer kan också skrivas i hexadecimal notering med hjälp av 0x
eller 0X
prefix och binärt med hjälp av 0b
eller 0B
prefix. Observera att Kotlin i alla dessa fall kan använda typinferens för att känna till vilken typ vi vill ha istället.
val myLong = 19L val myLongAgain: Lång = 40
För att konvertera ett nummer från en typ till en annan måste du uttryckligen anropa motsvarande konverteringsfunktion. Med andra ord finns det ingen implicit konvertering mellan typer av siffror.
val myNumber = 400 val minNumberAgain: Lång = myNumber // kastar Fel: Typ felaktighet
Varje nummertyp har hjälparfunktioner som konverterar från en taltyp till en annan: toByte ()
, toInt ()
, Tolong ()
, att flyta()
, att dubblera()
, toChar ()
, för kort()
.
val myInt = 987 val myLong = myInt.toLong ()
I koden ovan konverterar vi från ett heltal till en lång. Vi kan också göra omvändan med hjälp av metoden toInt ()
på den långa variabeln. Observera att detta kommer att avkorta värdet för att passa den mindre storleken på en int
skriv om det är nödvändigt så var försiktig när du konverterar från större typer till mindre!
Du kan också konvertera en Sträng
till en nummertyp.
val stringNumber = "101" val intValue = stringNumber.toInt ()
I koden ovan konverterade vi variabeln stringNumber
in i en int
skriv genom att ringa metoden toInt ()
på variabeln. Vi kan skriva detta mer kortfattat genom att istället kalla metoden direkt på strängen:
val intValue = "101" .toInt ()
De Boolean
skriv in Kotlin är detsamma som i Java. Dess värde kan vara antingen sant eller falskt. Operationsutjämningen (||
), samband (&&
) och negation (!
) kan utföras på booleska typer, precis som Java.
val myTrueBoolean = true val myFalseBoolean = falskt val x = 1 val y = 3 val w = 4 val z = 6 val n = x < z && z > w // n är sant
Strängar kan skapas med antingen dubbla citat eller tredubbla citat. Utöver detta kan flytecken användas med dubbla citat.
val myString = "Detta är en sträng" val escapeString = "Detta är en sträng med ny rad \ n"
För att skapa en sträng som sträcker sig över flera rader i källfilen använder vi trefaldiga citat:
val multipleStringLines = "" "Detta är första raden Detta är andra raden Detta är tredje raden" ""
Kotlin stöder också stränginterpolering eller strängmallar. Detta är ett enklare sätt att bygga dynamiska strängar än koncensation, vilket är vad vi använder i Java. Med hjälp av strängmallar kan vi infoga variabler och uttryck i en sträng.
val accountBalance = 200 val bankMessage = "Ditt kontosaldo är $ accountBalance" // Ditt kontosaldo är 200
I koden ovan skapade vi en sträng bokstavlig, och inuti den hänvisade vi till en variabel med hjälp av a $
tecken framför variabelnamnet. Observera att om variabeln inte är korrekt eller inte existerar, kommer koden inte att kompileras.
Vad sägs om om du behöver använda $
i din sträng? Du undviker bara det med \ $
! Du kan också ringa metoder från en interpolerad Sträng
direkt; du måste lägga till lockiga hängslen $
att lägga i den.
val name = "Chike" val meddelande = "Den första bokstaven i mitt namn är $ name.first ()" // Första bokstaven i mitt namn är C
En annan cool sak du kan göra är att utföra en del logik inuti de lockiga axlarna när du skapar en Sträng
bokstavlig.
val age = 40 val anotherMessage = "Du är $ if (ålder> 60)" gammal "annars" ung "" // Du är ung
I Kotlin finns det två huvudsakliga sätt att skapa en array: med hjälp av hjälparfunktionen arrayOf ()
eller konstruktören Array ()
.
arrayOf ()
FungeraLåt oss till exempel skapa en array med vissa element med arrayOf ()
.
val myArray = arrayOf (4, 5, 7, 3)
För att komma åt något av elementet kan vi använda dess index: myArray [2]
. Observera att vi kan skicka in värden av olika typer i arrayOf ()
som argument och det kommer fortfarande att fungera - det kommer att vara en grupp av blandad typ.
val myArray = arrayOf (4, 5, 7, 3, "Chike", false)
För att se till att alla matrisvärdena har samma typ, t.ex.. int
, Vi förklarar en typ genom att ringa arrayOf
eller intArrayOf ()
.
val myArray3 = arrayOf(4, 5, 7, 3, "Chike", falskt) // kommer inte kompilera val myArray4 = intArrayOf (4, 5, 7, 3, "Chike", false)
Vi har också andra verktygsfunktioner för att skapa arrays av andra typer som charArrayOf ()
, booleanArrayOf ()
, longArrayOf ()
, shortArrayOf ()
, byteArrayOf ()
, och så vidare. Bakom kulisserna skapar en rad olika Java-primitiva typer genom att använda dessa funktioner. Med andra ord, intArrayOf ()
kommer att kompilera till den vanliga Java-primitiva typen int []
, byteArrayOf ()
kommer vara byte []
, longArrayOf ()
kommer vara lång[]
, och så vidare.
Array ()
KonstruktörNu får vi se hur man skapar en matris med Array ()
. Konstruktören i denna klass kräver en storlek och en lambda-funktion. Vi lär oss mer om lambdafunktioner senare i serien, men för nu förstår vi bara att det är ett enkelt, inline sätt att förklara en anonym funktion. I detta fall är lambda-funktionen att initiera arrayen med element.
val numbersArray = Array (5, i -> i * 2)
I koden ovan passerade vi 5 som storleken på matrisen i det första argumentet. Det andra argumentet tar in en lambda-funktion, som tar indexet för matriselementet och returnerar sedan det värde som ska införas i det indexet i matrisen. Så i exemplet ovan skapade vi en array med element 0, 2, 4, 6 och 8.
Det här är en lätt. I Kotlin är kommentarer bara desamma som i Java. Vi kan antingen använda block- eller radkommentarer:
/ * hej, det här är en blockkommentar med flera linjer. Detta är en annan linje. Detta är en annan en gång till * / // det här är en enstaka kommentar
I denna handledning lärde du dig grunderna i Kotlins programmeringsspråk: variabler, grundläggande typer, typinferens, arrayer och kommentarer. I nästa handledning i Kotlin From Scratch-serien lär du dig information om loopar, intervall, villkor, samlingar och paket i Kotlin. Ses snart!
För att lära mig mer om Kotlins språket rekommenderar jag att du besöker Kotlins dokumentation. Eller kolla in några av våra andra Kotlin-tutorials här på Envato Tuts+.