以此记录学习kotlin基础语法笔记 方便以后查阅复习
-
声明属性 var 普通可变变量 val 不可变变量 类似于 final
-
空指针设计 ?. (调用前判断是否为空 ) !!.(不管是不是空)
-
空指针设计类型 可空类型 不可空类型 平台类型 (kotlin与别的平台交互) 举例子:
Button! -
判断对象类型 java 使用 instanceof 关键字 kotlin 使用 is 关键字
as 强制转换 如果用 is 判断过了 不用强转
if ( view is xxxView){
// var view_ as xxxView (不需要了)
// 已经强转过了 不需要 as 手动强转
}
-
java 类型.class 获取class 对象
kotlin通过 类名 :: class (kotlin的class对象)
kotlin 获取 java class 对象 -> demo::class.java -
kotlin 属性的 get / set 方法 关联在属性下面了 内部属性field 不写的话 自带 set get 效果
var code:String? = null
set(value){
field = value
}
get(){
return field
}
-
kotlin 声明构造函数使用 constructor 关键字
-
java 调用 kotlin 对象的时候 只能调用默认提供的get / set 函数,如果想像java 直接调用 需要注解 @JvmField
-
kotlin 所有的类 继承了 Any (相当于java的object)
-
void = Unit (无返回值)
-
单参数构造器 调用 多参 : this(context,null)
-
构造函数 调用 父类构造函数 :super(xx,xx);
-
定义一个数组 private val codeList = arroyOf()... 会装箱拆箱 可以用基本数据类型数据 intArrayof()...等
-
java中数组的长度是length , kotlin中数组的长度是size
-
kotlin中是没有static关键字的
-
kotlin 函数可以直接定义在文件中 = 顶层函数 top level function
-
java调用 kotlin顶层函数的话 需要通过文件名. 调用 例如:utils.dp2px...(文件名+kt后缀)
-
Object 修饰的类都会变成静态
-
java 调kotlin object 声明静态类 需要 INSTANTCE 实例 所以 object就是声明单例类 单例对象用的
-
java调用 kotlin 伴生对象 object companion 需要
class.Companion.xxxx(); -
在kotlin object中的类 声明注解 @JvmStatic 就可以变成 真正java中的静态函数 不需要 .companion调用
-
java调kotlin顶层函数可以改文件名 , @file:JvmName("KotlinUtilsDemo")
-
kotlin创建匿名内部类 使用的是object关键字 object : 类型 { } (类需要括号 接口不需要)
-
区间 if(x>=200 && x<500) 此类判断可以用区间表示 if(200..499) 表示 开区间 不包括500
-
kotlin使用 when 代替 switch case 逻辑判断语法
-
编译期常量:编译期间不能修改的常量 static final - > kotlin: const val
-
java中引用外部类对象 MainActivity.this.xxxx kotlin => this@MainActivity.xxxx(this@外部类类名)
-
lambda -> 单函数接口 匿名内部类 使用 直接一个括号
-
kotlin声明java的ArrayList => MutableList = ArrayList() 这样 ,也可通过 kotlin函数库 arraylistOf()....
-
kotlin遍历: for(str in list) in 代替java的 冒号
-
kotlin 如果要声明 内部类 需要inner关键字 否则就不是 内部类
-
kotlin 模块内访问修饰符 internal 当前模块可见 防止误用
-
普通类是被final修饰的 不可被继承 如果需要继承 则使用open 关键字修饰类,除非有 abstract/open/override 关键字修饰的
大概的笔记 方便忘记了查看 有语法错误以及描述不恰当 见谅