Kotlin Tutorial
Erste Schritte mit Kotlin
Suche…
Bemerkungen
Kotlin ist eine statisch typisierte, objektorientierte Programmiersprache, die von JetBrains entwickelt wurde und hauptsächlich auf die JVM abzielt. Kotlin wurde mit dem Ziel entwickelt, schnell zu kompilieren, abwärtskompatibel, sehr typsicher und zu 100% mit Java kompatibel zu sein. Kotlin wurde auch mit dem Ziel entwickelt, viele der von Java-Entwicklern gewünschten Funktionen bereitzustellen. Kotlins Standard-Compiler ermöglicht die Kompilierung sowohl in Java-Bytecode für die JVM als auch in JavaScript.
Kotlin kompilieren
Kotlin verfügt über ein Standard-IDE-Plugin für Eclipse und IntelliJ. Kotlin kann auch mit Maven , Ant und Gradle oder über die Befehlszeile kompiliert werden .
Beachten Sie, dass in $ kotlinc Main.kt
eine Java- $ kotlinc Main.kt
wird, in diesem Fall MainKt.class
. Wenn Sie jedoch die Klassendatei mit $ java MainKt
wird $ java MainKt
java die folgende Ausnahme $ java MainKt
:
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
at MainKt.main(Main.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
Um die resultierende Klassendatei mit Java ausführen zu können, muss die Jot-Datei für die Kotlin-Laufzeit in den aktuellen Klassenpfad eingefügt werden.
java -cp .:/path/to/kotlin/runtime/jar/kotlin-runtime.jar MainKt
Versionen
Ausführung | Veröffentlichungsdatum |
---|---|
1.0.0 | 2016-02-15 |
1.0.1 | 2016-03-16 |
1.0.2 | 2016-05-13 |
1.0.3 | 2016-06-30 |
1.0.4 | 2016-09-22 |
1,0,5 | 2016-11-08 |
1.0.6 | 2016-12-27 |
1.1.0 | 2017-03-01 |
1.1.1 | 2017-03-14 |
1.1.2 | 2017-04-25 |
1.1.3 | 2017-06-23 |
Hallo Welt
Alle Kotlin Programme beginnen an der main
Hier ist ein Beispiel eines einfachen Kotlin "Hello World" -Programms:
package my.program
fun main(args: Array<String>) {
println("Hello, world!")
}
Platzieren Sie den obigen Code in einer Datei namens Main.kt
(dieser Dateiname ist völlig willkürlich)
Beim Targeting der JVM wird die Funktion als statische Methode in einer Klasse mit einem vom Dateinamen abgeleiteten Namen kompiliert. Im obigen Beispiel würde die my.program.MainKt
.
Um den Namen der Klasse zu ändern, die Funktionen der obersten Ebene für eine bestimmte Datei enthält, platzieren Sie die folgende Anmerkung oben in der Datei über der Paketanweisung:
@file:JvmName("MyApp")
In diesem Beispiel wäre die my.program.MyApp
jetzt my.program.MyApp
.
Siehe auch:
- Funktionen auf
@JvmName
einschließlich Annotation@JvmName
. - Annotation-Nutzungs-Site-Ziele
Hallo Welt mit einer Objektdeklaration
Sie können alternativ eine Objektdeklaration verwenden , die die Hauptfunktion für ein Kotlin-Programm enthält.
package my.program
object App {
@JvmStatic fun main(args: Array<String>) {
println("Hello World")
}
}
Der Klassenname, den Sie ausführen werden, ist der Name Ihres Objekts. In diesem Fall ist dies my.program.App
.
Der Vorteil dieser Methode gegenüber einer Top-Level-Funktion besteht darin, dass der auszuführende Klassenname selbstverständlich ist und alle anderen Funktionen, die Sie hinzufügen, in die Klasse App
einbezogen werden. Sie haben dann auch eine Einzelinstanz von App
, um den Status zu speichern und andere Arbeiten auszuführen.
Siehe auch:
- Statische Methoden einschließlich der
@JvmStatic
Annotation
Hallo Welt mit einem Companion-Objekt
Ähnlich wie bei der Verwendung einer Objektdeklaration können Sie die main
eines Kotlin-Programms mithilfe eines Companion-Objekts einer Klasse definieren.
package my.program
class App {
companion object {
@JvmStatic fun main(args: Array<String>) {
println("Hello World")
}
}
}
Der Klassenname, den Sie ausführen werden, ist der Name Ihrer Klasse. In diesem Fall ist dies my.program.App
.
Der Vorteil dieser Methode gegenüber einer Top-Level-Funktion besteht darin, dass der auszuführende Klassenname selbstverständlich ist und alle anderen Funktionen, die Sie hinzufügen, in die Klasse App
einbezogen werden. Dies ähnelt dem Beispiel für die Object Declaration
, außer dass Sie die Instanziierung von Klassen für die weitere Arbeit steuern können.
Eine kleine Variation, die die Klasse instanziiert, um das eigentliche "Hallo" zu tun:
class App {
companion object {
@JvmStatic fun main(args: Array<String>) {
App().run()
}
}
fun run() {
println("Hello World")
}
}
Siehe auch:
- Statische Methoden einschließlich der @JvmStatic-Annotation
Hauptmethoden mit Varargs
Alle diese Hauptmethodenstile können auch mit varargs verwendet werden :
package my.program
fun main(vararg args: String) {
println("Hello, world!")
}
Kotlin-Code in der Befehlszeile kompilieren und ausführen
Java bietet zwei verschiedene Befehle zum Kompilieren und Ausführen von Java-Code. Genauso wie Kotlin auch andere Befehle.
javac
zum Kompilieren von Java-Dateien. java
, um Java-Dateien auszuführen.
Wie kotlinc
, um kotlin-Dateien zu kompilieren kotlinc
, um kotlin-Dateien kotlin
.
Eingabe von der Befehlszeile lesen
Die von der Konsole übergebenen Argumente können im Kotlin-Programm empfangen und als Eingabe verwendet werden. Sie können N (1 2 3 usw.) Argumentationsnummern an der Eingabeaufforderung übergeben.
Ein einfaches Beispiel für ein Befehlszeilenargument in Kotlin.
fun main(args: Array<String>) {
println("Enter Two number")
var (a, b) = readLine()!!.split(' ') // !! this operator use for NPE(NullPointerException).
println("Max number is : ${maxNum(a.toInt(), b.toInt())}")
}
fun maxNum(a: Int, b: Int): Int {
var max = if (a > b) {
println("The value of a is $a");
a
} else {
println("The value of b is $b")
b
}
return max;
}
Geben Sie hier zwei Zahlen in der Befehlszeile ein, um die maximale Anzahl zu ermitteln. Ausgabe :
Enter Two number
71 89 // Enter two number from command line
The value of b is 89
Max number is: 89
Zum !! Betreiber Bitte überprüfen Sie die Nullsicherheit .
Hinweis: In obigem Beispiel kompilieren und auf Intellij ausführen.