Kotlin
1.类型可变,后置,自动识别2.data3.迭代4.when5.字符串模板6.Unit类型7.Noting类型8.判断
8.1 in 和 !in8.2 all any count find8.3 可空类型 9.函数
9.1 高阶函数9.2 扩展函数9.3 伴生函数9.4 顶层函数9.5 密封类9.6 修饰符9.7 构造函数9.8 内部类和嵌套类9.9 open abstract override Kotlin 1.类型可变,后置,自动识别
var/val name//方法用fun关键字fun functin:Int / var name:String//name类型自动识别//kotlin中默认数据是非空类型,令空时特定设定var name="abcdefg"
2.data//kotlin中函数默认是public final类型,不可继承,open解决此问题open class hello{}//相当于在类中√私有数据的get()set()方法data class world{}
3.迭代//i从1到100for (i in 1..100)//i从100降序输出到1 且只输出偶数for (i in 100 downTo 1 step 2)//1到100半区间输出for(i in 1 until 100)
step是正的 4.when
fun hello(color:Color)=when(color){Color.RED->"blue"//多个值合成一个分支//->前面相当于if中的条件Color.WHITE,Color.BLACK,Color.ORANGE->"blue"else->"else"}
5.字符串模板//简单些的"$"val name="world"println("hello"+"$name")//复杂些的"${}"println("hello"+"${max(1,2)}")
6.Unit类型相当于void
fun f():Unit
7.Noting类型当返回值没有意义或者发生异常时,常用Nothing来替代
fun f(message:String):Nothing{}
8.判断 8.1 in 和 !infun isBetter(c:char)= c in 'a'...'z'&& c !in 'A'...'Z'
8.2 all any count findval list=listOf(1,2,3,4,5,6,7,8)val result={i:Int->i%2==0}println(list.all(result))
8.3 可空类型 as?
安全转换类型,为空时打印出null
name as Stringname as? Int
!!
一定不为空类型?.
判空且执行
A?.toUpperCase()
如果前面有过判空,代码将记住,后面默认为不为空类型
?:
A?.B //当A为null时会返回B fun str(s:String?):Int{ s ?、length ?: 0}
lateinit
延迟初始化修饰符
private lateinit var hi:String
kotlin要求构造方法中初始化所有属性,否则必须用可空类型
== 比较两个值大小 ===比较对象地址 9.函数 9.1 高阶函数
参数或返回类型是函数的函数称为高阶函数
fun operation(name:Int,age:Int,exam:(Int,Int)->Int)-> Int{return exam(name,age);}
9.2 扩展函数//格式:被扩展类.扩展方法fun String.abc():char=...
9.3 伴生函数//伴生相当于 static 作用fun campaion.Sring.
9.4 顶层函数//函数放入代码文件顶层package Utils fun hi(a:Int,b:Int)=if(a>b) a else b//调用import package Utils.hifun main(args:Array
static = sealed + abstractsealed作用防止类多次派生,引起逻辑混乱,如A继承B,B继承C…sealed能被继承但是子类只能执行父类方法不能拓展,且为final,sealed或者unsealed 9.6 修饰符 java Kotlin protected 同包及不同包子类protected子类default同包internal模块9.7 构造函数
主构造只能有一个,次构造可以有多个主构造没有方法体,用init初始化,不管什么结构体,init先执行
//主构造体constructor{init(){}}//次构造体constructor(name:String,age:Int){}
有主构造体,次构造体要执行主,没有就蒜了 9.8 内部类和嵌套类 类型 java Kotlin 内部类class Ainner class A嵌套类static class Aclass A9.9 open abstract override open abstract override 不final抽象,默认open可以重写在抽象类中使用,必须重写重写父类或接口中的成员
abstract class hi{//抽象方法默认为open不需要用open显式表示//若是非抽象就需要用openabstract fun B() //抽象方法 open fun A{} //非抽象方法 }