# Hello world 下面是一个简单的程序, 输出 "Hello, world!": ```KOTLIN fun main() { println("Hello, world!") // 输出结果为 Hello, world! } ``` 在 Kotlin 中: * `fun` 用来声明一个函数 * `main()` 函数是你的程序开始的位置 * 函数体写在大括号 `{}` 之内 * [println()](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/println.html) 和 [print()](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/print.html) 函数将它们的参数打印到标准输出 函数是一组指令, 执行特定的任务. 创建一个函数后, 你就可以在需要执行这个任务时使用这个函数, 而不必反复编写这些指令. 函数会在后面的各章中详细介绍. 在此之前, 所有的示例程序都使用 `main()` 函数. ## 变量 所有的程序都需要存储数据, 变量可以帮助你实现这个目的. 在 Kotlin 中, 你可以: * 使用 `val`, 声明只读的变量 * 使用 `var`, 声明可变的变量 > **Note:** > 在为只读变量初次赋值之后, 就不能再修改它的值. 要为变量赋值, 请使用赋值操作符 `=`. 例如: ```KOTLIN fun main() { //sampleStart val popcorn = 5 // 有 5 盒爆米花 val hotdog = 7 // 有 7 个热狗 var customers = 10 // 队列中有 10 个客户 // 有些客户离开了队列 customers = 8 println(customers) // 输出结果为 8 //sampleEnd } ``` > **Tip:** > 变量可以声明在 `main()` 函数之外, 在你的程序开始的地方. 使用这种方式声明的变量, 我们称之为声明在 顶级(top level) 范围中. 由于 `customers` 是可变的变量, 可以在变量声明之后对它重新赋值. > **Note:** > 我们建议默认将所有变量都声明为只读(`val`)变量. 只有在真正需要的时候才使用可变的(`var`)变量. 通过这种方式, 可以尽量避免意外的修改本来不应该修改的内容. ## 字符串模板 确定的知道变量内容如何打印到标准输出将会很有用处. 你可以使用 字符串模板 做到这一点. 你可以使用模板表达式来访问存储在变量和其它对象中的数据, 并将它们转换为字符串. 字符串值是包含在双引号 `"` 中的一串字符. 模板表达式总是以美元符号 `$` 作为起始. 要在模板表达式中计算一段代码的值, 请在美元符号 `$` 之后放置一对大括号 `{}`, 然后将代码放在大括号之内. 例如: ```KOTLIN fun main() { //sampleStart val customers = 10 println("There are $customers customers") // 输出结果为 There are 10 customers println("There are ${customers + 1} customers") // 输出结果为 There are 11 customers //sampleEnd } ``` 更多详情请参见 [字符串模板](strings.html#string-templates). 你会注意到, 上面的示例中没有为变量声明类型. Kotlin 自己会推断它的类型: `Int`. 这个教程会在 [下一章](kotlin-tour-basic-types.html) 中解释 Kotlin 各种不同的基本类型, 以及如何声明这些类型. ## 实际练习 ### 习题 完成以下代码, 让程序打印 `"Mary is 20 years old"` 到标准输出: ```KOTLIN fun main() { val name = "Mary" val age = 20 // 在这里编写你的代码 } ``` ```KOTLIN fun main() { val name = "Mary" val age = 20 println("$name is $age years old") } ``` ## See also * [下一步](kotlin-tour-basic-types.html)