1.基础语法
函数声明
声明函数要用 fun 关键字,就像声明类要用 class关键字一样
函数参数的参数类型是在参数名的右边
函数的返回值在函数参数右边使用:分割,没有返回值时可以省略
声明没有返回值的函数
fun main() {
printLn(hello world)
}
声明有返回值的参数
fun doubleX(x: Int): Int {
return x * 2
}
变量声明
- 声明变量需要通过关键字, var 声明可读可写变量,
val 声明只读变量 - 类型在变量名的右边,用:分割,同时如果满足类型判断,类型可以省略
- 创建对象直接调用构造器,不需要 new 关键字
声明可读可写变量
var age: Int = 18
声明只读变量
val name: String = "Jarvis"
创建对象
val kotlin: Kotlin = Kotlin()
类型判断
如果表达是右边的类型是可以推断出来的,那么类型可以省略
var age = 18
val name = "Jarvis"
val kotlin = Kotlin()
继承类/实现接口
继承类和实现接口都是用的 : ,如果类中没有构造器,需要在类后面加上 ()
class MainActivity : BaseActivity(), View.OnClickListener
空安全设计
kotlin中的类型分为可空类型和不可空类型
- 不可空类型 EditText
- 可空类型 EditText?
调用符
- !!强行调用符
-
?.安全调用符
类型判断
- is 判断属于某类型
- !is 判断不属于某类型
- as 类型墙砖,失败哦爆出类型强转失败异常
-
as? 类型前传,失败返回 null
静态函数和属性
- 顶层函数
- object
- companion object
其中,顶层函数直接在文件中定义函数和属性,会直接生成静态代码。在java中通过文件名Kt来访问,同事可以通过 @file:JvmName 注解来修改这个类名
object 和 companion object 都是生成单例对象,然后通过单例对象访问函数和属性的
JvmStatic
通过这个注解将 object 和 comnpanion object 的内部函数和属性,真正生成静态代码
2.Kotlin标准函数
使用是可以通过简单的规则作出一些判断
- 返回自身
从 apply 和 also 中选
1.作用域中使用this作为参数选择apply
2.作用域中使用it作为参数选择also - 不需要返回自身
从 run 和 let 中选
1.作用域中使用this作为参数选择run
2.作用域中使用it作为参数选择let
apply适合对一个对象做附加操作的时候
let适合空判断的时候
with适合对同一个对象进行对此操作的时候
3.Kotlin扩展函数(extension function)
扩展函数可以为任何类添加上一个函数,从而代替工具类
扩展函数和成员函数相同时,成员函数优先被调用
拓展韩束是静态解析的,在编译时就确定了调用函数(没有多态)