KotlinKotlin入门


备注

Kotlin是JetBrains开发的一种静态类型的面向对象编程语言,主要针对JVM。 Kotlin的开发目标是快速编译,向后兼容,非常类型安全,并且与Java 100%可互操作。 Kotlin的开发目标是提供Java开发人员所需的许多功能。 Kotlin的标准编译器允许将其编译为JVM的Java字节码和JavaScript。

编译Kotlin

Kotlin有一个适用于Eclipse和IntelliJ的标准IDE插件。 Kotlin也可以使用Maven使用Ant使用Gradle或通过命令行进行编译。

值得注意的是,在$ kotlinc Main.kt将输出一个java类文件,在本例中为MainKt.class (注意附加到类名的Kt)。但是,如果要使用$ java MainKt运行类文件,则$ 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

为了使用Java运行生成的类文件,必须将Kotlin runt-time jar文件包含到当前类路径中。

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

版本

发布日期
1.0.0 2016年2月15日
1.0.1 2016年3月16日
1.0.2 2016年5月13日
1.0.3 2016年6月30日
1.0.4 2016年9月22日
1.0.5 2016年11月8日
1.0.6 2016年12月27日
1.1.0 2017年3月1日
1.1.1 2017年3月14日
1.1.2 2017年4月25日
1.1.3 2017年6月23日

在命令行中编译并运行Kotlin代码

由于java提供了两个不同的命令来编译和运行Java代码。与Kotlin一样,它也为您提供不同的命令。

javac 编译java文件。 java 运行java文件。

kotlinc 编译kotlin文件kotlin 来运行kotlin文件。

你好,世界

所有Kotlin程序都从main 函数开始。这是一个简单的Kotlin“Hello World”程序的例子:

package my.program

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

将上面的代码放入名为Main.kt 的文件中(此文件名完全是任意的)

在定位JVM时,该函数将在类中编译为静态方法,其名称源自文件名。在上面的例子中,要运行的主类是my.program.MainKt

要更改包含特定文件的顶级函数的类的名称,请将以下注释放在package语句上方的文件顶部:

@file:JvmName("MyApp")
 

在此示例中,要运行的主类现在是my.program.MyApp

也可以看看:

Hello World使用Companion对象

与使用对象声明类似,您可以使用类的Companion对象定义Kotlin程序的main 功能。

package my.program

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

您将运行的类名是您的类的名称,在本例中是my.program.App

此方法相对于顶级函数的优势在于,要运行的类名称更加不言而喻,您添加的任何其他函数都限定在类App 。这类似于Object Declaration 示例,除了您可以控制实例化任何类以进行进一步的工作。

稍微变化一下实例化类来执行实际的“hello”:

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

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

也可以看看:

Hello World使用对象声明

您也可以使用包含Kotlin程序主要功能的对象声明

package my.program

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

您将运行的类名是对象的名称,在本例中为my.program.App

此方法相对于顶级函数的优势在于,要运行的类名称更加不言而喻,您添加的任何其他函数都限定在类App 。然后,您还有一个App 的单例实例来存储状态并执行其他工作。

也可以看看:

使用varargs的主要方法

所有这些主要方法样式也可以与varargs一起使用:

package my.program

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

从命令行读取输入

从控制台传递的参数可以在Kotlin程序中接收,并且可以用作输入。您可以从命令提示符传递N(1 2 3等)参数。

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;

}
 

在这里,从命令行输入两个数字以查找最大数量。输出:

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

The value of b is 89
Max number is: 89
 

对于!!操作员请检查Null Safety

注意:上面的示例编译并在Intellij上运行。