kotlin笔记--基础篇

kotlin基础

变量

  1. 在kotlin中if 是表达式;Java中赋值操做是表达式,而在kotlin中变成了语句java

    • 表达式和语句区别:表达式是有值的,而且能做为另外一个表达式得一部分使用
  2. kotlin中声明变量以关键字开始,而后是变量名称,最后能够加上类型数组

    • 关键字:val--表示不可变引用,对应java中的final函数

      ​ var--表示可变引用ui

    • 注意:val引用自身时不变的,可是它指向的对象多是可变的。
    • 若是不指定变量类型,编译器会分析初始化器表达式的值,并把它做为变量的类型,若是没有初始化器,则须要显式地指定它的类型
  3. 字符串模板:,在变量名称前加上或者用${}包围一个表达式spa

    fun main(args: Array<String>) {
        println("Hello, ${if (args.size > 0) args[0] else "someone"}!")
    }
    复制代码

函数

  1. 用关键字fun来声明函数.net

  2. 能够定义在文件最外层,没必要放入类中code

  3. 表达式函数体:若是一个函数体是由单个表达式构成,能够用这个表达式做为一个完整的函数体对象

    例如:对以下接口

  4. //代码体块
    fun max(a: Int, b: Int): Int {
    	return if (a > b) a else b
    }
    复制代码
  5. //表达式函数体
    fun max(a: Int, b: Int):Int = if (a > b) a else b
    复制代码
  6. //表达式函数体+类型推导
    fun max(a: Int, b: Int) = if (a > b) a else b
    复制代码

  1. 数组就是类element

  2. 只有数据没有代码的对象叫作值对象

  3. 属性:

    • 当声明属性的时候,你就声明了对应的访问器(只读属性只有一个getter,而可写属性既有getter又有setter).
    • 在kotlin中,能够直接访问属性,好比person.isMarried = false实际调用的是setter
  4. 自定义访问器

    class Rectangle(val height: Int, val width: Int) {
        val isSquare: Boolean
            get() {
                return height == width
            }
    }
    复制代码
  5. 标记类实现接口,例如:

    class Num(val value: Int) : Expr
    复制代码

控制结构

  1. 枚举类和"when"

    1. when相似于java中的switch但功能更增强大
  2. ifwhen均可以使用代码块做为分支体,在这种状况下,代码块中的最后一个表达式就是结果

  3. for循环和in

    • 区间:本质上是两个值之间的间隔,一个起始值,一个结束值用..来表示区间

      • Kotlin中区间是闭合的,这就意味这第二个值始终是区间的一部分

      • //从100开始倒着计数而且只记偶数
        for (i in 100 downTo 1 step 2) {
            print(fizzBuzz(i))
        }
        复制代码
      • 使用until来表示不包含指定结束值得半闭合区间

    • 迭代map

      • //letter表明key, binary表明value, binaryReps表明Map
        for ((letter, binary) in binaryReps) {
            println("$letter = $binary")
        }
        复制代码
      • 可使用map[key] = value来设置读取值,binaryReps[c] = binary等价于 binaryReps.put(c, binary)

      • withIndex()在迭代集合时追踪当前项的下标,不须要建立一个单独的变量来存储下标并手动增长他:

        val list = arrayListOf("1", "11", "111")
        for ((index, element) in list.withIndex()) {
            printlin("$index: $element")
        }
        复制代码
  4. 使用in来检查集合和区间的成员

    • in运算符来检查一个值是否在区间中,!n检查这个值是否不在区间中

智能转换

  1. is检查和java中的instanceOf类似,在检查过变量具备某种类型以后没必要再显式地转换它的类型:编译器使用智能转换
  2. as关键字来表示到特定类型的显示转换

异常处理

  1. 没必要用new关键字来建立异常实例
  2. throw结构是一个表达式,能做为另外一个表达式的一部分使用
  3. kotlin并不区分受检异常和未受检异常,不用指定函数抛出异常,同时也能够处理也能够不处理异常

ps:本文参考自:《kotlin实战》

之后每一周会坚持更新一篇读书笔记

相关文章
相关标签/搜索