Kotlin - 基本语法



Kotlin 程序入口点

Kotlin 应用程序的入口点是 **main()** 函数。函数可以定义为一段旨在执行特定任务的代码块。

让我们从一个基本的 Kotlin 程序开始,在标准输出上打印“Hello, World!”

fun main() {
   var string: String  = "Hello, World!"
   println("$string")
}

运行上述 Kotlin 程序时,它将生成以下输出

Hello, World!

带参数的入口点

另一种形式的 **main()** 函数接受可变数量的 String 参数,如下所示

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

运行上述 Kotlin 程序时,它将生成以下输出

Hello, World!

如果您观察到,很明显这两个程序生成相同的输出,因此从 Kotlin 1.3 版本开始,在 **main()** 函数中传递参数是完全可选的。

print() 与 println()

**print()** 是 Kotlin 中的一个函数,它将其参数打印到标准输出,类似地,**println()** 是另一个函数,它将其参数打印到标准输出,但它还在输出中添加了一个换行符。

让我们尝试以下程序来理解这两个重要函数之间的区别

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

    print("Hello,")
    print(" world!")
}

运行上述 Kotlin 程序时,它将生成以下输出

Hello, 
 world!
Hello, world!

这两个函数 (print() 和 println()) 都可以用来打印数字和字符串,同时还可以执行任何数学计算,如下所示

fun main(args: Array<String>){
    println( 200 )
    println( "200" )
    println( 2 + 2 )

    print(4*3)
}

运行上述 Kotlin 程序时,它将生成以下输出

200
200
4
12

Kotlin 中的分号 (;)

与许多其他编程语言(如 Java、C++、C# 等)需要分号 (;) 来结束语句不同,Kotlin 代码语句不需要分号来结束语句。

尽管您可以成功地编译和运行带有或不带分号的 Kotlin 程序,如下所示

fun main() {
    println("I'm without semi-colon")
    
    println("I'm with semi-colon");
}

运行上述 Kotlin 程序时,它将生成以下输出

I'm without semi-colon
I'm with semi-colon

因此,作为良好的编程实践,不建议在 Kotlin 语句末尾添加分号。

Kotlin 中的包

Kotlin 代码通常定义在包中,尽管包规范是可选的。如果您没有在源文件中指定包,则其内容将进入默认包。

如果我们在 Kotlin 程序中指定一个包,则它将在文件顶部指定,如下所示

package org.tutorialspoint.com

fun main() {
    println("Hello, World!")
}

运行上述 Kotlin 程序时,它将生成以下输出

Hello, World!

测验时间 (面试及考试准备)

Q 1 - Kotlin **main()** 函数必须有一个参数才能成功编译代码

A - 正确

B - 错误

答案:B

解释

Kotlin **main()** 函数不必总是有参数。如果您需要通过字符串数组传递多个参数,则可以使用类似 **main(args: Array<String>)** 的参数,否则不需要。

Q 2 - 以下 Kotlin 程序的输出是什么

fun main() {
    println("1"); println("2")
}

A - 这将导致语法错误

B - 它将打印 12

C - 第一行打印 1,第二行打印 2

D - 以上都不是

答案:C

解释

虽然 Kotlin 不建议在语句末尾使用分号,但如果您想在一行中分隔两个语句,则可以使用分号,否则将出现编译时错误。

答案:A

解释

这里只有 A 语句是正确的,因为我们不能在没有 **main()** 函数的情况下运行 Kotlin 程序,它是 Kotlin 程序的入口点。在 Kotlin 程序中是否使用 **print()** 或 **println()** 函数并不重要。

广告