Zoeken…


Opmerkingen

Kotlin is een statisch getypeerde objectgeoriënteerde programmeertaal ontwikkeld door JetBrains die zich primair op de JVM richt. Kotlin is ontwikkeld met als doel snel te compileren, achterwaarts compatibel, zeer typeveilig en 100% interoperabel met Java. Kotlin is ook ontwikkeld met het doel veel van de functies te bieden die Java-ontwikkelaars willen. Met Kotlin's standaardcompiler kan het zowel in Java-bytecode voor de JVM als in JavaScript worden gecompileerd.

Kotlin compileren

Kotlin heeft een standaard IDE-plug-in voor Eclipse en IntelliJ. Kotlin kan ook worden gecompileerd met Maven , Ant en Gradle of via de opdrachtregel .

Vermeldenswaard is dat in $ kotlinc Main.kt een java- $ kotlinc Main.kt zal uitvoeren, in dit geval MainKt.class (let op de Kt die is toegevoegd aan de MainKt.class ). Als je echter het klassebestand met $ java MainKt zal java de volgende uitzondering $ 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

Om het resulterende klassebestand met Java uit te voeren, moet het Kotlin-runtime-jarbestand worden toegevoegd aan het huidige klassenpad.

java -cp .:/path/to/kotlin/runtime/jar/kotlin-runtime.jar MainKt

versies

Versie Publicatiedatum
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 Wereld

Alle Kotlin programma's beginnen bij de main functie. Hier is een voorbeeld van een eenvoudig Kotlin "Hello World" -programma:

package my.program

fun main(args: Array<String>) {
    println("Hello, world!")
}

Plaats de bovenstaande code in een bestand met de naam Main.kt (deze bestandsnaam is volledig willekeurig)

Wanneer u de JVM target, wordt de functie gecompileerd als een statische methode in een klasse met een naam afgeleid van de bestandsnaam. In het bovenstaande voorbeeld is de hoofdklasse die moet worden uitgevoerd my.program.MainKt .

Als u de naam van de klasse met functies op het hoogste niveau voor een bepaald bestand wilt wijzigen, plaatst u de volgende annotatie bovenaan het bestand boven de pakketverklaring:

@file:JvmName("MyApp")

In dit voorbeeld zou de belangrijkste uit te voeren klasse nu my.program.MyApp .

Zie ook:

Hallo wereld met behulp van een objectverklaring

U kunt ook een objectverklaring gebruiken die de hoofdfunctie voor een Kotlin-programma bevat.

package my.program

object App {
    @JvmStatic fun main(args: Array<String>) {
        println("Hello World")
    }
}

De klassenaam die u gaat uitvoeren, is de naam van uw object, in dit geval is dit my.program.App .

Het voordeel van deze methode ten opzichte van een functie op het hoogste niveau is dat de uit te voeren klassenaam meer vanzelfsprekend is en dat alle andere functies die u toevoegt, zijn opgenomen in de klasse- App . Je hebt dan ook een enkele instantie van de App om de status op te slaan en ander werk te doen.

Zie ook:

Hallo wereld met behulp van een begeleidend object

Net als bij het gebruik van een Verklaring object, kunt u het definiëren main functie van een Kotlin programma met behulp van een Companion object van een klasse.

package my.program

class App {
    companion object {
        @JvmStatic fun main(args: Array<String>) {
            println("Hello World")
        }
    }
}

De klassenaam die u gaat uitvoeren is de naam van uw klasse, in dit geval is dit my.program.App .

Het voordeel van deze methode ten opzichte van een functie op het hoogste niveau is dat de uit te voeren klassenaam meer vanzelfsprekend is en dat alle andere functies die u toevoegt, zijn opgenomen in de klasse- App . Dit is vergelijkbaar met het Object Declaration voorbeeld, anders dan u bent in controle van het instantiëren elke klassen om verder werk te doen.

Een kleine variatie die de klasse ertoe aanzet om de werkelijke "hallo" te doen:

class App {
    companion object {
        @JvmStatic fun main(args: Array<String>) {
            App().run()
        }
    }

    fun run() {
        println("Hello World")
    }
}

Zie ook:

Belangrijkste methoden met behulp van varargs

Al deze hoofdmethodestijlen kunnen ook worden gebruikt met varargs :

package my.program

fun main(vararg args: String) {
    println("Hello, world!")
}

Compileer en voer Kotlin-code uit op de opdrachtregel

Omdat Java twee verschillende opdrachten biedt om Java-code te compileren en uit te voeren. Hetzelfde als Kotlin biedt u ook verschillende opdrachten.

javac om java-bestanden te compileren. java om Java-bestanden uit te voeren.

Hetzelfde als kotlinc om kotlin-bestanden te compileren kotlin om kotlin-bestanden kotlin te voeren.

Invoer lezen vanaf opdrachtregel

De argumenten van de console kunnen worden ontvangen in het Kotlin-programma en kunnen worden gebruikt als invoer. U kunt N (1 2 3 enzovoort) aantal argumenten doorgeven vanaf de opdrachtprompt.

Een eenvoudig voorbeeld van een opdrachtregelargument 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;

}

Voer hier twee nummers in vanaf de opdrachtregel om het maximale aantal te vinden. Uitgang:

Enter Two number
71 89 // Enter two number from command line

The value of b is 89
Max number is: 89

Voor !! Operator Controleer nulveiligheid .

Opmerking: Bovenstaand voorbeeld compileren en uitvoeren op Intellij.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow