OO or Functional
Kotlin既支持OO,又支持函数式编程。Kotlin代码会编译成JVM字节码,所以Kotlin与Java是100%兼容的,可以互相调用。Kotlin是静态类型语言。
函数结构
fun main(args: Array<String>): Int { // code here }
Kotlin内的函数定义以fun关键字开始,后跟函数名,后面通过括号()将函数参数包裹。返回结果的类型在参数列表的后面,用冒号与参数列表区分开。
如果函数没有标明返回类型,或者返回类型为Unit,均表示函数不返回值。
单表达式的函数,可以省略花括号,直接在返回类型的后面,通过等于号(=)连接单表达式函数体,如:fun max(a: Int, b: Int): Int = if (a < b) b else a。
循环
Kotlin支持3种循环结构:while,do-while, for
条件语句
注意,如果if语句作为表达式,必须包含else分支,否则编译器报错。
基本类型
整数
Kotlin包含4种基本类型:
- Byte: 8bit
- Short: 16bit
- Int: 32bit (默认类型)
- Long: 64bit
0b前缀表示二进制数字,如:0b10。0x表示十六进制数字,如:0xAB。
注意,Kotlin不支持八进制数字。
浮点数字
Kotlin支持2种浮点类型:Float和Double(默认类型)
布尔类型
Boolean类型有2种值:true和false
字符/字符串
Character表示字符,如'A',用单引号。String表示字符串,如“A”,用双引号。
数组
可以使用arrayOf方法创建数组,如:var a = arrayOf(1,2)。a.size返回2。
遍历数组可以使用for-in,如:for (item in itemArray)。如果想在遍历的时候获取index,使用for ((index, item) in itemArray.withIndex())。
Range
1..5 表示[1, 5]闭区间。
1 until 5表示 [1, 5)左闭右开区间。
5 downTo 1 表示反向输出[1, 5]。
Range通常用于循环中,如:
for (x in 1..5) println(x) # 单语句循环体,可以省略花括号。
操作Range时,可以指定step,表示步长,如:for (x in 1..5 step 2) println(x) 输出1, 3, 5。
变量赋值
需保证涉及的2个变量必须是相同类型,否则编译报错。若为不同类型,需要进行类型转换。每个数值类型的对象都有如下的类型转换方法:toByte(), toInt(), toLong(), toShort(), toFloat(), toDouble()。
注意:对浮点数使用toInt,小数部分会直接砍掉,不会进行四舍五入。
局部变量在使用前(包括作为函数的返回值)必须赋值,否则编译器报错。
Content mainly excerpted from 「Head First Kotlin」 by Dawn Griffiths and David Griffiths