kotlin学习笔记

来源:互联网 发布:淘宝有种苗吗 编辑:程序博客网 时间:2024/06/04 19:57

kotlin学习笔记

基本知识

  • 常量定义:val 常量名
  • 变量定义:var 变量名
  • 变量定义时加上数据类型,var 变量名:数据类型,由于kotlin有类型推断,所以类型可以省略不写。例如:var a:Int=5
  • 将变量插入文字中,print(“我的名字是username")使{}的形式插入。
  • kotlin中默认的浮点型是Double(双精度),大多数情况下不使用Float类型
  • 类型安全:变量一旦定义,其类型不可更改。即不能给变量一个类型不同的值
  • 元组(Tuple),给多个变量同时赋值,分二元(Pair)和三元(Triple)。例如:var (day,month,year)=Triple(28,3,2017)
  • 可空类型:在kotlin中都是空类型安全的,所有变量默认被修饰为不可为null,必须显示在类型后添加”?”修饰符才可赋值为null。形式:var 变量:类型?
  • 类型判断is,例如:(c is String)
  • 强制转换:as,安全转换:as?

字符串

  • 字符串用”“包裹,isEmpty()判断是否为空,count()获取数量,toCharArray()将字符串转为字符数组
  • 字符用’ ‘包裹,isDigit()判断是否为数字,isLetter()判断是否为文字
  • 字符串或字符的相连使用+

数组

  • Array:Array(计数,{默认值})或arrayOf(元素1,元素2,元素3,元素n),大小固定,元素类型不可变。
  • 创建1-10的数组,Array(10,{i -> i+1})
  • 数组中元素计数:count(),空否:isEmpty(),获取其中的元素:数组名[索引],首元素:数组名.first,尾元素:数组名.last,获取前五个元素的快捷方法:component1到5
  • 获取筛选重复元素后的数组:数组名.distinct()或用 数组名.toSet()转换为Set
  • 切割数组:数组名.sliceArray()
  • mutableList:MutableList<类型>或mutableListOf(“元素一”,”元素二”),大小可变,类型不可变。在末尾添加元素add()方法,添加一个数组addAll()方法。移除元素remove(“元素”),移除指定元素removeAt(索引)

集合Set

  • set特点是无序不重复
  • Set<类型>或setOf(“元素1”,”元素2”,”元素n”)
  • 元素计数:count(),空否:isEmpty()
  • 检查是否包含某个元素:contains(),包含另一个Set:containsAll()
  • 转化为数组:toTypedArrray()
  • 集合之间的加减乘除运算:intersect/subtract/union/minus(补集的被操作对象无须是Set类型)
  • 转换为可变:toMutableSet
  • MutableSet<类型>或mutableSetOf(元素1,元素2,元素3,…元素n),大小可变,类型不可变。在末尾增加元素:add()方法,添加另一个集合,addAll()方法。移出元素:remove(),移出另一个集合:removeAll()。

集合Map

  • 无序可重复,类似字典
  • 主要属性keys,values
  • mapOf< key,value>(Pair(key,value),…)显示指定类型,可防止初始化值类型的错误。
  • 元素计数:size(),空否:isEmpty()
  • 获取某个key对应的value:get(),获取某个key对应的值当不存在时有默认值getOrDefault()
  • 获取所有的key:集合.keys,获取所有的value:集合.values
  • 转换为可变:集合.toMutableMap()
  • 添加或更新:下标方法 map变量名[key]=value
  • 移除元素:remove()函数

函数

  • 函数定义:fun 函数名(参数1:数据类型,参数2:数据类型): 返回类型{return 值;}
  • 可变参数修饰符:varary
  • 高阶函数:参数或返回值的类型是函数型
  • 函数型:(参数)->返回值
  • lambda:一种无名函数的简写{(参数)->函数执行语句}其他语言称必包,即有能力访问其自身范围外的变量。

  • class 类名 constructor(属性列表){更多属性和方法描述}
  • 类的继承:class 类名(属性列表):父类名(属性列表){}
  • 类的实例化:val 变量名=类名(属性)
  • 类的属性与变量定义相似
  • 组合属性,有其他属性计算而来(get)
  • 组合属性可以影响其他属性(set),this代表实例
  • 属性覆盖:override
  • 方法定义:fun 方法名(){}
  • 方法覆盖:override
  • 可见性修饰符:设定类本身及其属性,方法,构造器以及接口和对象的对外访问权限,即“可见性”。private:私有,仅当前类可见,最小的可见性。protected:保护,仅子类可见。internal:内部,当前模块内可见。public:公开,默认对外完全可见。
  • 嵌套类,与主类关系并不是十分密切,只是一个形式上的合作,主从关系
  • 内部类:inner class 类名,通常用于不直接对外的类,为主类服务的。内部类可以访问主类的属性
  • 数据类:专用于只保存数据的类,kotlin数据类:data class 类名(属性列表),数据类序列化:数据类.toString(),数据类的克隆:数据类.copy(属性重新赋值)
  • 枚举类:有限个类型的枚举,其中的每一个称之为枚举常量(可带初始值),每一个以逗号分隔,定义:enum class 类型{枚举常量(值),枚举常量(值),….,枚举常量n(值)},枚举类也可像普通类一样带构造器。

异常

  • 捕获异常try{}catch(e:Exception){},也可以将其赋值给一个变量。

接口

  • interface 接口名{//各种属性或方法定义}
  • 接口中的方法可以有默认实现,即接口的方法中可以有内容。

泛型

  • 一般用于函数的参数类型定义,让函数更通用。
  • 定义函数:fun<类型占位符> 函数名(参数名:类型占位符){}
  • 泛型约束:<泛型占位符:类型>

其他详情请参考Kotlin官方中文网站:https://www.kotlincn.net/