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. 手把手详解持续集成之GitLab CI/CD

    一.环境准备 首先需要有一台 GitLab 服务器,然后需要有个项目:这里示例项目以 Spring Boot 项目为例,然后最好有一台专门用来 Build 的机器,实际生产中如果 Build 任务不频 ...

  2. linux常见故障处理

    目录 一. 文件和目录类 1.1 File exist 文件已经存在 1.2 No such file or directory 没有这个文件或目录(这个东西不存在) 1.3 command not ...

  3. php 日历代码

    日历的PHP接口代码: $user_id = $_SESSION['user_id']; $year = isset($_REQUEST['tty']) ? intval($_REQUEST['tty ...

  4. 关于PCB走线能不能走锐角的讨论

    (此文参考吴川斌的博客) 很多PCB工程师都知道Layout走线时忌走直角,那么锐角能走吗? 回答当然是否定的!为什么呢? 这里先不说锐角对高速信号走线会不会造成负面影响,单从PCB DFM(可制造性 ...

  5. json格式的中文输出显示

    print json.dumps(json.loads(result),ensure_ascii=False)

  6. HttpClient不必每次新建实例而RestSharp推荐新建实例的原因

    https://stackoverflow.com/questions/49588205/should-restclient-be-singleton-or-new-for-every-request ...

  7. 烽火2640路由器命令行手册-11-IP语音配置命令

    IP语音配置命令 目  录 第1章 配置拨号对命令... 1 1.1 配置拨号对命令... 1 1.1.1 dial-peer voice. 1 1.1.2 application. 2 1.1.3 ...

  8. Linux支持ntfs,exfat格式文件系统

    sudo apt-get install exfat-utilssudo apt-get install ntfs-3g ntfs-config exFAT最高支持16EB的文件,并且exfat在wi ...

  9. HangFire快速入门 分布式后端作业调度框架服务

    安装 NuGet 上有几个可用的Hangfire 的软件包.如果在ASP.NET应用程序中安装HangFire,并使用Sql Server作为存储器,那么请在Package Manager Conso ...

  10. 1.用代码演示String类中的以下方法的用法 (2018.08.09作业)

    public class Test_001 { public static void main(String[] args) { String a = "德玛西亚!"; Strin ...