(1) kotlin中函数以fun关键字开头
(2) 返回值类型写在函数名后面
(3) java中无返回值是void,kotlin中无返回值是Unit
(4) 函数参数的写法是:参数名:参数名类型
(5) 函数可以直接写在文件中,也可以写在类中
(1) 可读可写变量var、只读变量val
(2) val 相当于java中的final
(3) 变量申明:val 或者val 变量名 :变量名类型
(4) kotlin中对象申明不需要new关键字
(5) 变量申明不写类型也不会报错,类型推断
class MainActivity : AppCompatActivity(),View.OnclickListener{
}
(1) 在变量类型右边加上问号,表示可空类型
(2) 调用时,在变量名右侧加上!!,强行不检测,可能引发空指针异常,不建议使用
(3) 调用时,在变量名右侧加上?.时,会先判断是否为null,为null时不调用,不为null时调用
(2) kotlin中申明变量必须有初始化值
(1) 延时初始化 lateinit
(2) 被 lateinit 修饰的变量不能有初始值,也不能设置为null
(1) kotlin中的类型判断使用 is 关键字
(2) kotlin中的强转使用 as 关键字
(1) example: 要获取MainActivity.class-->Kotlin中的写法是 MainActivity::class.java
(1) kotlin 中调用set、get函数时,kotlin会省略get、set
(2) example:
private lateinit var userName: EditText
userName = findViewById(R.id.et_username)
val username: String = userName.text.toString()
(1) Kotlin中的数据类 data class Person{ }
(2) 注解:@JvmField 使用这个注解,可以在java中直接访问kotlin中使用这个注解的成员变量
(3) java 中的所有类都是 Object的子类;kotlin中所有类都是Any的子类
(4) 数据类会自动生成get/set
(1) 声明在文件中的函数是顶层函数,可以直接调用,如果文件名相同以包名来区分
(2) 在java中调用kotlin中的顶层函数,使用文件名+Kt调用
example:
kotlin中 Utils.method()
java中调用kotlin代码:UtilsKt.method()
(3) 顶层函数在java中调用,可以通过注解 @file:JvmName("Utils") 来自定义名称
(3) 在Kotlin中如果一个类使用 object修饰,那么这个类就是个单例对象,所有的属性和函数都是使用单例来调用的
kotlin中调用:MyUtils.method()
java中调用kotlin代码:MyUtils.INSTANCE.method()
(4) 伴生对象 companion object,在java中调用,使用通过类名.Companion来调用
(5) 伴生对象中的常量使用const 修饰
(6) 通过@JvmStatic注解就可以使Kotlin函数变为静态函数,就不用通过类名.Companion来调用了
(1) java中申明匿名内部类使用new关键字,kotlin中使用object