Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Hello, World!

“Hello, world!”是一个常用的程序,用于演示编程语言的基本语法。

我们将分几个步骤来开发这个程序,以便您了解它的组成部分。

首先,让我们来看一个什么也不做的空程序:

// HelloWorld/EmptyProgram.kt

fun main() {
  // 程序代码在这里...
}

这个示例以一个注释开始,注释是Kotlin忽略的说明性文本。//(两个正斜杠)表示从注释开始一直到当前行的结尾:

// 单行注释

Kotlin会忽略//和之后的所有内容,直到行尾。在下一行,Kotlin会重新开始解析代码。

本书中每个示例的第一行都是一个注释,以源代码文件所在的子目录名称开头(在这里是HelloWorld),后面跟着文件的名称:EmptyProgram.kt。每个小节的示例子目录与该小节的名称相对应。

关键字是语言保留的特殊单词,具有特定的含义。关键字fun函数的缩写。函数是一组可以使用该函数名称执行的代码(我们在整本书中都会详细介绍函数)。函数的名称跟在fun关键字后面,所以在这个例子中是main()(在散文中,我们会在函数名称后面加上括号)。

main()实际上是一个函数的特殊名称,它表示Kotlin程序的“入口点”。Kotlin程序可以有许多具有不同名称的函数,但是在执行程序时,main()函数会自动被调用。

参数列表跟在函数名称后面,并由括号括起来。在这里,我们没有将任何内容传递给main(),所以参数列表是空的。

函数体位于参数列表之后。它以左大括号({)开始,以右大括号(})结束。函数体包含语句表达式。语句产生一个效果,而表达式则产生一个结果。

EmptyProgram.kt在函数体中没有任何语句或表达式,只有一个注释。

让我们通过在main()的函数体中添加一行代码来显示“Hello, world!”:

// HelloWorld/HelloWorld.kt

fun main() {
  println("Hello, world!")
}
/* Output:
Hello, world!
*/

显示问候语的代码行以println()开头。与main()类似,println()是一个函数。这行代码调用了该函数,从而执行函数体。你需要给出函数名称,后面跟着括号,括号中包含一个或多个参数。在本书中,当在文中提到函数时,我们在名称后面加上括号,以提醒读者它是一个函数。在这里,我们写作println()

println()接受一个参数,该参数是一个String(字符串)。你可以通过将字符放在引号内来定义一个String

在显示参数后,println()将光标移到新的一行,因此后续的输出将出现在下一行。你也可以使用print(),它将光标保留在同一行。

与某些语言不同,你在Kotlin中不需要在表达式的末尾加上分号。只有在一行上放置多个表达式时才需要分号(这种做法是不鼓励的)。

在本书的一些示例中,我们在列表结束时显示输出结果,放在一个多行注释内。多行注释以/*(斜杠后跟星号)开头,并继续——包括换行符(我们称之为换行符)——直到*/(星号后跟斜杠)结束注释:

/* 这是一个多行注释
不关心
换行符 */

可以在注释的结束标记*/之后的同一行上添加代码,但这样会导致混淆,所以人们通常不这样做。

注释提供了从代码中无法直接得出的信息。如果注释只是重复代码的含义,它们会变得很烦人,人们会开始忽略它们。当代码发生变化时,程序员经常忘记更新注释,因此明智地使用注释是一种好的实践,主要用于突出你的代码中棘手的方面。

练习和解答可在 www.AtomicKotlin.com 上找到。