Kotlin
Kotlin för Java-utvecklare
Sök…
Introduktion
De flesta som kommer till Kotlin har en programmeringsbakgrund i Java.
Detta ämne samlar exempel som jämför Java med Kotlin, och belyser de viktigaste skillnaderna och de juveler som Kotlin erbjuder över Java.
Förklarande variabler
I Kotlin ser variabla deklarationer lite annorlunda ut än Java:
val i : Int = 42
De börjar med antingen
val
ellervar
, vilket förklaringenfinal
( "val ue") eller var iable.Typen noteras efter namnet, separerad med en
:
Tack vare Kotlins typinferens kan den uttryckliga typdeklarationen beviljas om det finns en uppgift med en typ som kompilatorn kan entydigt upptäcka
Java | Kotlin |
---|---|
int i = 42; | var i = 42 ( eller var i : Int = 42 ) |
final int i = 42; | val i = 42 |
Snabb fakta
- Kotlin behöver inte
;
för att avsluta uttalanden - Kotlin är noll-säkert
- Kotlin är 100% Java interoperabelt
- Kotlin har inga primitiv (men optimerar deras objekt motsvarigheter för JVM, om möjligt)
- Kotlin-klasser har egenskaper, inte fält
- Kotlin erbjuder dataklasser med auto-genererade
equals
/hashCode
metoder ochhashCode
- Kotlin har endast undantag för körning, inga kontrollerade undantag
- Kotlin har inget
new
nyckelord . Skapa objekt görs bara genom att ringa konstruktören som alla andra metoder. - Kotlin stöder (begränsad) överbelastning av operatörer . Till exempel kan åtkomst till ett värde på en karta skrivas som:
val a = someMap["key"]
- Kotlin kan inte bara kompileras till byte-kod för JVM, utan också till Java-skript , vilket gör att du kan skriva både backend- och frontend-kod i Kotlin
- Kotlin är helt kompatibel med Java 6 , vilket är särskilt intressant vad gäller stöd för (inte så) gamla Android-enheter
- Kotlin är ett officiellt stödspråk för Android-utveckling
- Kotlins samlingar har inbyggd skillnad mellan muterbara och oföränderliga samlingar .
- Kotlin stöder Coroutines (experimentellt)
Jämställdhet och identitet
Kotlin använder ==
för jämställdhet (det vill säga samtal equals
internt) och ===
för referensidentitet.
Java | Kotlin |
---|---|
a.equals(b); | a == b |
a == b; | a === b |
a != b; | a !== b |
Se: https://kotlinlang.org/docs/reference/equality.html
IF, TRY och andra är uttryck, inte uttalanden
I Kotlin, if
, try
och andra är uttryck (så att de returnerar ett värde) snarare än (ogiltiga) uttalanden.
Så till exempel har Kotlin inte Java: s ternära Elvis-operatör , men du kan skriva något liknande:
val i = if (someBoolean) 33 else 42
Ännu mer obekant, men lika uttrycksfullt, är try
uttryck:
val i = try {
Integer.parseInt(someString)
}
catch (ex : Exception)
{
42
}