目录
优点
-
支持文件级别的函数、变量声明
-
行尾不需要分号
-
关键字区别
var 变量 val 常量
常量的另外一种表达方式:
companion object {
const val hello: String = "HELLO"
}
- 类型定义
变量、函数返回值、参数类型,都是在后面加上:类型。
变量可以不加类型,赋值的时候会自动判断。
数组的类型不是"类型[]",而是使用类"Array<类型>"来定义数组
可空类型:变量后+?表示变量是可空类型,可以赋值为null。
-
方法定义
采用fun关键字 -
字符串模板
$varName 表示变量值 ${varName.fun()} 表示变量的方法返回值
-
去掉不必要的模板代码
如fun maxOf(a: Int, b: Int) = if (a > b) a else b
等价于
fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { return b } }
但是没有了{}、return,更加简洁。
-
null检测
一般变量值、方法参数和方法返回值等凡是有赋值的地方,默认都不能返回null。如果要返回null,需要在类型后面加上?
https://www.proyy.com/6959738939141783589.html -
类型检测与自动类型转换
is -
when表达式
类似于switch表达式
https://blog.csdn.net/guoxinyu1207/article/details/100031824 -
区间
in与.. -
扩展属性
-
kotlin 线程基础 https://www.jianshu.com/p/a684118c1b98
-
kotlin中while条件中不能存在赋值语句,否则报错
-
如何startActivity https://blog.csdn.net/l465659833/article/details/73322588/
-
匿名内部类 https://blog.csdn.net/gongjdde/article/details/77451424
调用外部类的this,this@外部类类名
- return更加精确
return@xx,可以指定return的具体位置。
类
与java类大不一样
- 私有变量会自动生成set/get方法
- 对象不需要new
- 默认情况下,Kotlin 类是最终(final)的:它们不能被继承。 要使一个类可继承,请用 open 关键字标记它。
- 获取字节码
https://blog.csdn.net/fly7632785/article/details/79863049 - 定义静态方法
https://blog.csdn.net/qq_37080185/article/details/114531221
https://blog.csdn.net/qq_37080185/article/details/114531221
-
接口实现
https://blog.csdn.net/qq_37299249/article/details/79946269//对象获取 person.javaClass// javaClass person::class.java // javaClass //类获取 Person::class// kClass person.javaClass.kotlin// kClass (Person::class as Any).javaClass// javaClass Person::class.java // javaClass
-
对象属性调用
?.表示当前对象如果为空则不执行,可以省去很多的if非空判断
!!.表示当前对象如果为空也执行,然后会抛出空异常 -
继承类
方式1:
:类名()
方式2:
还有一种形式,类名不加构造方法,在类里面声明构造方法。
class MaskFilterCustomView : View{
constructor(context: Context, attributeSet: AttributeSet): super(context,attributeSet)
}
-
startActivity
https://blog.csdn.net/qq_33210042/article/details/108831613 -
单例实现
https://blog.csdn.net/fulai00/article/details/144192503 -
接口回调
https://blog.csdn.net/weixin_39534002/article/details/117764811
位运算
https://blog.csdn.net/u010428110/article/details/106824749
关键字
-
as
类型转换
java中的(ParameterizedType)type
转换成kotlin就是
type as ParameterizedType
-
线程相关的关键字
volatile、syncronized等关键字,在kotlin里用@Volatile、@Syncronized表示。 -
object
https://blog.csdn.net/weixin_47933729/article/details/128654496
缺点
基本类型没有隐式拓宽转换,只能通过方法显示拓宽。
0 条评论