昨天面试中面试官提到了,现在他们开发移动客户端基本不用Java了,都是使用Kotlin或者flutter,那么赶紧来恶补下吧。
照例先从Hello World开始吧。
按照菜鸟教程给的方法,在Idea中建立了Kotlin的项目。那么,Hello World的代码大概就是这样的了:
fun main(args: Array<String>) {
println("hello world")
}
Kotlin 语法基础
包声明
代码文件的开头一般为包的声明:
package com.runoob.main
import java.util.*
fun test() {} class Runoob {}
- kotlin源文件不需要相匹配的目录和包,源文件可以放在任何文件目录。
- 如果没有指定包,默认为 default 包。
函数定义
- 函数定义使用关键字 fun,参数格式为:
参数 : 类型
fun sum(a: Int, b: Int): Int { // Int 参数,返回值 Int
return a + b
}
- 表达式作为函数体,返回类型自动推断:
fun sum(a: Int, b: Int) = a + b public fun sum(a: Int, b: Int): Int =
a + b // public 方法则必须明确写出返回类型
- 无返回值的函数(类似Java中的void),使用Unit表示
变长参数
可以用 vararg 关键字进行标识:
fun vars(vararg v:Int){
for(vt in v){
print(vt)
}
}
// 测试
fun main(args: Array<String>) {
vars(1,2,3,4,5) // 输出12345
}
lambda(匿名函数)
fun main(args: Array<String>) {
val sumLambda: (Int, Int) -> Int = {x,y -> x+y}
println(sumLambda(1,2)) // 输出 3
}
定义常量与变量
变量 var <标识符> : <类型> = <初始化值>
常量 val <标识符> : <类型> = <初始化值>
常量与变量都可以没有初始化值,但是在引用前必须初始化
编译器支持自动类型判断,即声明时可以不指定类型,由编译器判断。
注释
这块基本和Java是一样的。与 Java 不同, Kotlin 中的块注释允许嵌套。
// 这是一个单行注释
/* 这是一个多行的
块注释。 */