1.函数也是对象,可以作为参数和返回值

2.使用驼峰命名,尽量避免下划线

3.public函数应当有说明文档

4.lambda中花括号内前后都应该有空格

5.空值安全检查  var s: String? = null;当一个变量允许为空值时,必须使用?来声明

6.当?:左边表达式不为空时,返回表达式的值,否则执行?:右边表达式的值

7.as?  安全类型转换,转换失败会返回null

8.lambda表达式相当于一个函数     fun add(x :Int,y :Int) : Int = x + y

  lambda可写成  val add(Int , Int) -> Int = { x , y -> x + y }

9.没有返回值的函数,显式指定Unit为返回值

10.is运算符来检查数据类型和类型转换

11.in操作符检查一个数是否在某个范围内

12.vararg 可变参数

13.$字符串模版

14.位运算符: or 或 /  and 与 /  shl有符号左移  / shr 有符号右移  / ushr 无符号右移  /  xor 按位异或  / inv 按位取反

15.downTo 递减,循环可用,每次减1

16.step 步长 ,循环时可用,设置每次循环的增加或减少的量

17.when kotlin中增强版的switch,可以匹配值,范围,类型与参数

18.数据类型

    Double   64

    Float  32

    Long  64

    Int   32

    Short  16

    byte    8

  ①没有自动向上转型

  ②Long类型结尾必须是大写的L,不能为小写

  ③字符Char不是Number,用单引号来声明

  ④Boolean的值为true或false

  ⑤Kotlin不支持8进制,  十六进制0x开头,二进制0b开头

  ⑥位运算符

19.数组

  Kotlin中使用Array类表示数组,需要注意一点:[]访问数组元素在这里实际上是进行了操作符的

  创建数组:定长数组  val fixedSizeArray = arrayOfNulls<Int>(10)

       空数组 val empty = emptyArray<Int>()

       装箱操作 val arr = arrayOf(1,2,3) //还有其他比如 IntArrayOf,BooleanArrayOf

       闭包初始化

  访问数组:使用[]

  遍历数组:for(i in array) print(i)

  根据下标遍历:for(i in array.indices) print(array[i])     //indices 代表下标 !范围(0<=indices <数组size)

20.流程控制

  Kotlin中的if-else: val min = if(a<b) a else b

          val min = if(a<b) "a比较大“ else b

          val min = if(a<b) "a比较大“ else Unit

  在if语句块的最后可以自动返回最后一行表达式的值,而不需要写return

21.异常

  Kotlin没有检验异常,它的throw和try都是表达式,意味着它们可以赋值给某个变量,这点在处理边界问题的时候很有用。

22.集合

  跟据是否可变分为:不可变集合与可变集合,后者在前者的前面加上 Mutable

  列表:List/ MutableList

  集:Set/MutableSet

  映射:Map/MutableMap

  集合:Collection/MutableCollection

  迭代器:Iterable/MutableIterable

  

    list:

    空List   val emptyList = emptyList<String>()

    普通List     val list = listOf(1,2,3)

    可修改的List  val mList = mutableListOf(1,2,3)

    Set:

    空set    val emptySet = emptySet<String>()

    普通set  val set = setOf(1,2,3)

    可变的set  val mSet = mutableSetOf(1,2,3)

    HashSet     val hashSet = hashSetOf(1,2,3)

    LinkedSet   val  linkedSet = linkedSetOf(1,2,3)

    SortedSet   val sortedSet = sortedSetOf(1,2,3)

    map:

    这的键值对用  to  关键字 ,   key  to  value

    空Map   val emptyMap = emptyMap<Int,String>()

    普通map  val  map = mapOf(1  to  "coder",2  to  "pig")

    可变的map  val mMap = mutableMapOf(1  to  "coder",2  to  "pig")

    HashMap   val  hashMap = hashMapOf(1  to  "coder",2  to  "pig")

    LinkedMap   val    linkedMap = linkedMapOf(1  to  "coder",2  to  "pig")

    SortedMap    val   sortedMap = sortedMapOf(1  to  "coder",2  to  "pig")

23.强势的集合操作符

    总数操作符、过滤操作符、映射操作符、顺序操作符、生产操作符、元素操作符

    总数操作符:

    any---判断集合中是否有满足条件的元素

    all---判断集合中的元素是否都满足条件

    none---判断集合是否都不满足条件,是则返回true

    count---查询集合中满足条件的元素个数

    reduce---从第一项到最后一项进行累计

    reduceRight---从最后一项到第一项进行累计

    fold---与reduce类似,不过有初始值,而不是从0开始累计

    foldRight---和reduceRight类似,有初始值,而不是从0开始累计

    forEach---循环遍历元素,元素是it,可对每个元素进行相关操作

    forEachIndexed---循环遍历元素,同时得到元素index(下标)

    max---查询最大的元素,如果没有则 返回null

    maxBy---获取方法处理后返回结果最大值对应的哪个元素的初始值,如果没有则返回null

    min---查询最小值

    minBy---同maxBy

    sumBy---获取方法处理后返回结果值的总和

    dropWhile---返回从第一项起,去掉满足条件的元素,直到不满足条件的一项为止

    过滤操作符:过滤后会返回一个处理后的列表结果,但不会改变原列表

    filter---过滤掉所有满足条件的元素

    filterNot---过滤所有不满足条件的元素

    filterNotNull---过滤NULL

    take---返回从第一个开始的n个元素

    takeLast---返回从最后一个开始的n个元素

    takeWhile---返回不满足条件的下标前面的所有元素的集合

    drop---返回去掉前N个元素后的列表

    dropLastWhile---返回从最后一项起,去掉满足条件的元素,直到不满足条件的一项为止

    slice---过滤掉非指定下标的元素,即暴力下标对应的元素过滤list中指定下标的元素

    映射操作符:

    map---将集合中的元素通过某个方法转换后的结果存到一个集合中

    mapIndexed---除了得到转换后的结果,还可以拿到index(下标)

    mapNotNull---执行方法转换前过滤掉为Null的元素

    flatMap---合并两个集合,可以在合并的时候做些小动作

    groupBy---将集合中的元素按照某个条件分组,返回map

    顺序操作符:

    reversed---相反顺序

    sorted---自然排序(升序)

    sortedBy---根据方法处理结果进行自然排序

    sortedDescending---降序排序

    sortedByDescending---根据方法处理结果进行降序排序

    生产操作符:

    zip---两个集合按照下标组合成一个个的Pair塞到集合中返回

    partition---根据判断条件是否成立,拆分成两个Pair

    plus---合并两个list,可以用“+“替代

    unzip---将包含多个Pair的List转换成含List的Pair

    元素操作符:

    contains---判断集合中是否有指定元素,有返回true

    elementAt---查找下标对应的元素,如果下标越界会抛IndexOutOfBoundsException

    elementAtOrElse---查找下标对应元素,如果越界会根据方法返回默认值

    elementAtOrNull---查找下标对应元素,越界会返回Null

    first---返回符合条件的第一个元素,没有抛NoSuchElementException

    firstOrNull---返回符合条件的第一个元素,没有返回null

    indexOf---返回指定下标的元素,没有返回-1

    indexOfFirst---返回第一个符合条件的元素的下标,没有返回-1

    indexOfLast---返回最后一个符合条件的元素下标,没有返回-1

    last---返回符合条件的最后一个元素,没有抛NoSuchElementException

    lastIndexOf---返回符合条件的最后一个元素,没有返回-1

    lastOrNull---返回符合条件的最后一个元素,没有返回null

    single---返回符合条件的单个元素,如果没有符合或超过一个,抛异常

    singleOfNull---返回符合条件的单个元素,如果没有符合或超过一个,返回null

    

    

  

Kotlin基础的更多相关文章

  1. Kotlin基础篇(一)

    写在前面: 因为工作需要,目前转安卓开发,用的IDE是AS3.2版本,语言的话,用的是Kotlin.由于之前是做.NET的,没接触过这方面的东西,所以完全是小白一枚.所以想着开个博客,以此来记录自己的 ...

  2. Kotlin基础(五)Kotlin的类型系统

    Kotlin的类型系统 一.可空类型 //s为null的话编译器会报错,没问号不能为空 fun strLen(s : String)=s.length //如果允许s为空可: fun strLen2( ...

  3. Kotlin基础知识

    1. 改进点/基础 //安全判空 val length = text?.length; //类型转换 if (object is Car) { var car = object as Ca } //操 ...

  4. Kotlin基础语法:变量、函数、类、枚举、控制流

    一切都需要从基础学起! 前言: 在Kotlin语言中,没有分号的概念了,也就是每一行代码,都不在需要用分号结束了 点击查看代码 定义 常量:val --相当于java当中的final 变量:var 关 ...

  5. Kotlin基础特性深入讲解

    继续学习基础语法,在上次https://www.cnblogs.com/webor2006/p/11183077.html中定义了一个两数相加的函数,如下: 其实对于这个函数还可以进一步简写,因为函数 ...

  6. Kotlin——基础的函数/方法详解

    对于Kotlin中的函数来说,和JavaScript或者Lua这些语言很像,它有着这些语言的特性.但是也与这些语言就着许多不同之处.或许你更了解Java语言,然而对于Java语言来说,它不是不是闭包这 ...

  7. Kotlin基础语法学习

    Kotline简介 Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源.与Java相比,Kotlin的语法更简洁.更具表达性,而且提供了更多的特性,比如,高阶函 ...

  8. Kotlin基础(四)Lambda编程

    Lambda编程 一.Lambda表达式和成员引用 一)Lambda表达式语法 //注意与Java8中的区别 val sum={ x:Int,y:Int -> x+y } println(sum ...

  9. Kotlin基础(三)类、对象和接口

    类.对象和接口 一.定义类的继承结构 一)Kotlin中的接口 Kotlin的接口与Java8中相似,它们可以包含抽象方法的定义以及非抽象方法的实现,但它们不能包含任何状态. interface Cl ...

随机推荐

  1. Java常见的10个异常

    1.NullPointerException: 空指针异常,当操作一个 null 对象的方法或属性时会抛出这个异常.是一个很头疼的异常,因为它是运行时异常,不需要手动捕获,但运行时碰到这个异常会中断程 ...

  2. git增加子模块

    要拉取GIT代码时,有时候需要拉取多个GIT模块,一起配合使用: 1.下载主模块: git clone -b master http://username:passwd@git.wondershare ...

  3. 使用X509Certificate2类操作证书文件

    public class CertHelper { string pfxPath = @"E:\开发辅助项目\cert\taisuyuanqing.pfx"; string cer ...

  4. Flume-ng高可用集群负载安装与配置

    1. 写在前面 flume-ng高可用长在大数据处理环节第一个出现,对于处理日志文件有很好的作用,本篇博客将详细介绍flume-ng的高可用负载均衡搭建 2. flume-ng高可用负载均衡描述 在一 ...

  5. mongodb将时间作为条件查询

    db.stock_signal_single.find({"createtime": { "$lt" : ISODate("2019-04-08T00 ...

  6. postgresql 53300错误

    1.查看当前库的最大连接数 show max_connections; 2.查看当前数据库的活动连接数 select datname,application_name,pid,state from p ...

  7. js常见的面试题

    css 选择符有哪些 通配选择符 *类选择符 classid选择符 id属性选择符 input[name=button]包含选择符 类似 div span子对象选择符 类似 div > span ...

  8. 开发中常用的JS知识点集锦

    索引 1.对象深拷贝 2.网络图片转base64, 在线图片点击下载 3.常用CSS样式记录(超出宽高省略展示/播放icon/按钮背景颜色渐变...) 4.对象深拷贝 5.对象深拷贝 6.对象深拷贝 ...

  9. 前端工具mock的使用 - 造数据模拟网络请求

    前后端同步开发过程中,有时候前端页面完成了,需要等待后端接口完成部署后才能联调. 这个时候如果不想等待,想自己造数据模拟网络请求,这种情况就能用到mock工具了. mock工具可以用在web网站,也能 ...

  10. C++11 带来的新特性 (1)

    1 语法改进 1.1 模板表达式中的空格 在c++03 及以前 vector<list<int>>; //Error vector<list<int> > ...