博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kotlin笔记--基础篇
阅读量:6819 次
发布时间:2019-06-26

本文共 1986 字,大约阅读时间需要 6 分钟。

kotlin基础

变量

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

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

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

      ​ var--表示可变引用

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

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

函数

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

  2. 可以定义在文件最外层,不必放入类中

  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. 数组就是类

  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代表Mapfor ((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实战》

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

转载于:https://juejin.im/post/5cfbb006e51d45773d4685e3

你可能感兴趣的文章
Android开发系列(二十三):实现带图片提示的Toast提示信息框
查看>>
深入解析Windows窗体创建和消息分发
查看>>
AIX下RAC搭建 Oracle10G(六)dbca建库
查看>>
vs code 快捷键中英文对照
查看>>
systemd的运行级别与服务管理命令简介
查看>>
MVC5 一套Action的登录控制流程
查看>>
Linux下的两个经典宏定义 转
查看>>
报错stale element reference: element is not attached to the page document结局方案
查看>>
Redis源代码剖析--对象object
查看>>
【感悟】——人生路,昂首走
查看>>
Testbench
查看>>
HNOI2015题解
查看>>
【项目实战】多线程环境下正确创建单例
查看>>
linux centos 7 nodejs 的安装
查看>>
mssqlserver分区表的左值与右值
查看>>
推荐系统
查看>>
HoloLens | 世界的每一次变化,其实都提前打好了招呼
查看>>
seq命令
查看>>
线性表接口的实现_Java
查看>>
利用安卓手机搭建WEB服务器
查看>>