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:

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:

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:

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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow