Kotlin基础语法
上一篇,我们使用Kotlin在控制台打印了“Hello World",接下里,我们就来到Kotlin的世界,一步一步的认识和探索Kotlin的奥秘。
我们再来回顾一下我们的"Hello World"程序。
在项目结构中,我们创建的HelloWorld文件。
我们看到Kotlin文件是以.kt为后缀的文件。在Kotlin中,所有的程序文件均以.kt结尾。接下来,我们看看我们的代码。
package com.lion.helloworld fun main() { print("Hello World") }
第一行package com.lion.helloworld
称为包声明。Kotlin源文件不需要相匹配的目录和包,源文件可以放在任何文件目录。如果不指定包名,则默认为default包。
fun main(){}
称作函数定义,函数使用fun
关键字定义,基本格式为fun 函数名 参数 返回值 {}
。
而main()
方法中包含的print("Hello World")
的部分称作代码块。
我们来重新定义一个函数。
fun sum(a: Int, b: Int): Int { return a + b }
函数为一个求和函数,sum
是函数名称,括弧内的a, b表示参数,a: Int
表示一个Int
型的参数a。方法后面的:Int
表示该函数有一个Int
型的返回值。
在Kotlin中,我们这个求和函数还可以简写为
fun sum(a: Int, b: Int) = a + b
在上面的函数中,我们看到没有了返回值: Int
,而且省略了{}
。这样的函数称作表达式函数。Kotlin的自动类型推断,自动推断出函数的返回值为Int
。
我们再来回顾一下main()
函数,在main()
函数中,我们看到函数并非表达式函数,但是也没有看到返回值的定义,是为什么呢?那是因为我们的main()
函数不需要返回值。
在Kotlin中,没有返回值的函数是这样定义的
fun printSum(a: Int, b: Int): Unit { print(a + b) }
如果返回值是Unit类型的,默认是可以省略的,这也就是为什么我们的main()
方法,并没有返回值的原因。
在Kotlin中,还有一种函数,称作可变长参数函数。其定义如下:
fun vars(vararg vars: Int) { }
可变长参数函数,参数定义和普通的函数不一样,是由vararg
修饰的,参数类型代表了可变长参数的类型。
可变长参数实际上是一个数组参数,数组后面我们会涉及到,现在先不用关心它。
另外, Kotlin中有个特殊的函数匿名函数,其定义也被称作lambda表达式。
val sum: (Int, Int) -> Int = {a, b -> a + b}
那分别表示什么含义呢?
val
是常量定义的修饰符, sum
是常量名称,(Int, Int)
表示该匿名函数的参数定义,有两个参数,均为Int
类型。-> Int
表示匿名函数的返回值为Int
。{a, b -> a + b}
为匿名函数的参数名称和代码块,表示匿名函数的两个参数分别为a和b, ->
后面的a + b
为求和代码块。
那我们要怎么使用匿名函数呢?
fun main(): Unit { print(sum(1, 2)) } val sum: (Int, Int) -> Int = {a, b -> a + b}
和正常的函数一样,我们使用常量名称sum(1, 2)
来调用它,1 和 2分别是两个Int
的入参,sum
的值,就是整个匿名函数的返回值,我们来执行一下。
我们看到执行结果是3,也就是将入参1和2进行了求和。
学习匿名函数的时候,有提到常量(即不可变变量),在Kotlin中,有不可变变量(常量)val
及可变变量var
两种。
可变变量由var
关键字修饰,其定义为:
var <变量标识符> : <类型> = <初始化值>
var age: Int = 10
不可变变量由val
关键字修饰,其定义为:
val <变量标识符> :<类型> = <初始化值>
val name: String = "Lion"
var
变量和val
变量的区别在于,var
变量是可以重复赋值的,而val
变量仅可以赋值一次。
对val
变量二次赋值,编译器将会报错,无法编译成功。
编译器提示,val
无法重新赋值。如果运行代码,也会因为编译失败而无法运行。
而var
变量,则可以重复赋值。
fun main() { var age: Int = 10 age = 20 print(age) }
运行结果:
当我们定义的变量或函数比较复杂时,为了更好地让别人理解我们所写的代码的意图,就必须给代码添加相应的注释,用以说明。
在Kotlin中,注释支持单行或多行注释。
单行注释:
// 单行注释使用双斜线开始添加注释内容
多行注释:
/* 多行注释由/和*号开始 并以*和/结束。*/
当然,函数中的注释也支持Java标准的注释方式:
比如我们前面写的求和方法,我们给它增加注释。
/** * 求和方法。 * * @param a 第一个求和参数 * @param b 第二个求和参数 * @return 求和结果 */ fun sum(a: Int, b: Int) = a + b
Kotlin的基础语法就学到这儿,有些语法在后续的学习中会逐渐涉及到。
微信扫码关注,惊喜多多。