1.1kotlin简介:
JetBrains发布。
编译型语言:编译成2进制文件来执行,c,c++,
解释型语言:解释器读取源代码,解释成2进制数据来执行,python,javascript。
java和kotlin先编译成.class文件,再通过解释器解释成2进制数据来执行,所以是解释型。
kotlin相比于java加入了很多高级语法,100%兼容java。
1.2变量和函数
val定义不可变量,相当于java中的final
var定义可变的变量,相当于非final定义的变量
数据类型:kotlin放弃了基本数据类型,全部使用了对象数据类型。
Int,Long,Short,Float,Double,Boolean,Char,Byte
if条件判断默认返回最后一行
when类似java中switch,但是更加灵活,可以进行字符的处理。比如判断name.startWith();
循环语句
for,while,0..10表示[0,10]。0until 10表示[0,10)。step,表示步长,对应i++,i+2;downTo表示倒序。
1.3面向对象编程
对比java不用写new关键字来创建对象。不用写get,set。直接通过.属性来进行赋值和获取。
不能直接被继承,需要写object才能被继承。:Person(),表示继承Person类。
其实就是构造函数的简便写法。加不加()取决于有没有构造函数。
接口和java的差不多,多了一个默认实现方法。
可见性修饰符
java | 含义 | kotlin | 含义 |
---|---|---|---|
private | 类内部可见 | private | 类内部可见 |
public | 全局可见 | public | 全局可见 |
protected | 当前类、子类、同一包路径下的类 | protected | 当前类、子类 |
默认 | 同一包路径下的类 | 默认public | 全局可见 |
internal | 同一模块下 |
数据类
在class前面加data就可以了,不用写get和set不用写equals、hashCode、toString方法。
data class Cellphone(val brand:String,val price:String)
单例
把class改为object。
1.4Lambda表达式
集合的创建和遍历
listof创建不可变集合
val list=listof("Apple","banana")
mutableListof()创建可变集合
val list=mutableListof("Apple","banana")
list.add("Pear")
setof创建set集合
mapof创建map集合
val map=mapof("Apple"to 1,"Banana" to 2)
1.5集合的函数式表达
list.maxby{it.length}
list.map遍历集合
list.filter过滤
1.6空指针检测
?可为空 ?.当不为空的时候执行,!!.非空断言,对象的let函数可以不用每次都?.
1.7字符串内嵌表达式
${}
1.8函数默认值
fun printParams(num:Int,str:String="hello"){
}
1.9标准函数和静态函数
with run apply
@JvmStatic,单例,companion object ,顶层方法。
1.10延迟初始化和密封类
lateinit
密封类就是列举了所有情况,条件判断的时候,不用写else了
1.11扩展函数和运算符重载
fun ClassName.methodName(param1:Int):Int{
}
运算符重载
operator fun plus(obj:Obj):Obj{
}
+是会编译成plus的
1.12高阶函数
1.12.1内联函数
网友评论