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 eller var , vilket förklaringen final ( "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 och hashCode
  • 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
}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow