Kotlin 入门(一)

目录

  • 基本数据类型

    • 数字
    • 字符
    • 布尔
    • 数组
    • 字符串
  • 控制流(if/when/for/while)

    • if
    • when
    • for
    • while
  • 函数与Lambda表达式

  • 类与对象

    • 继承
    • 属性与字段
    • 接口
    • 内联类
  • 注释

  • 编码规范

基本数据类型

数字

Type Bit Width
Double 64
Float 32
Long 32
Int 32
Short 16
Byte 8

字面常量

  • 十进制:123
    • Long类型用大写L 标记:123L
  • 十六进制:0x0F
  • 二进制:0b0001011
  • 默认Double:123.5、123.5e10
  • Float 用f或者F标记:123.5f

数字字面值中的下划线(自1.1起)

val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010
复制代码
  1. 对于数字没有隐式拓展转换(如Java中的int可以隐式转换为long)
  2. kotlin 不支持八进制
  3. Kotlin 中字符不是数字

字符

布尔

布尔用 Boolean 类型表示,它有两个值:true 与 false。
若需要可空引用布尔会被装箱。
内置的布尔运算有:

  • || – 短路逻辑或
  • && – 短路逻辑与
  • ! - 逻辑非

数组

控制流

if表达式

在 Kotlin 中,if是一个表达式,即它会返回一个值。 因此就不需要三元运算符(条件 ? 然后 : 否则),因为普通的 if 就能胜任这个角色。

// 传统用法
var max = a 
if (a < b) max = b

// With else 
var max: Int
if (a > b) {
    max = a
} else {
    max = b
}
 
// 作为表达式
val max = if (a > b) a else b
复制代码

if的分支可以是代码块,最后的表达式作为该块的值:

val max = if (a > b) {
    print("Choose a")
    a
} else {
    print("Choose b")
    b
}
复制代码

如果你使用 if 作为表达式而不是语句(例如:返回它的值或者把它赋给变量),该表达式需要有 else 分支。

when

when 取代了类 C 语言的 switch 操作符。其最简单的形式如下

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> { // 注意这个块
        print("x is neither 1 nor 2")
    }
}
 如果 when 作为一个表达式使用,则必须有 else 分支, 除非编译器能够检测出所有的可能情况都已经覆盖了。
复制代码

while 循环

while (x > 0) {
    x--
}

do {
  val y = retrieveData()
} while (y != null) // y 在此处可见
复制代码

函数

函数的声明

Kotlin 中的函数使用 fun 关键字声明:

fun double(x: Int): Int {
    return 2 * x
}
复制代码

定义函数

  1. 带有两个 Int 参数、返回 Int 的函数:
fun sum(a: Int, b: Int): Int {
    return a + b
}
复制代码
  1. 将表达式作为函数体、返回值类型自动推断的函数:
fun sum(a: Int, b: Int) = a + b
复制代码
  1. 函数返回无意义的值,Unit是一种只有一个值——Unit 的类型。这个值不需要显式返回:
fun printSum(a: Int, b: Int): Unit {
    println("sum of $a and $b is ${a + b}")
}
复制代码

类与对象

类的成员

  • 构造函数与初始化块
  • 函数
  • 属性
  • 嵌套类与内部类
  • 对象声明

构造函数

Kotlin 中使用关键字 class 声明类

class Invoice { ... }
复制代码

属性与字段

  1. 属性可以用关键字var 声明为可变的,否则使用只读关键字val,1、只读属性的用 val开始代替var 2、只读属性不允许 setter。要使用一个属性,只要用名称引用它即可
  2. getter和setter
var <propertyName>[: <PropertyType>] [= <property_initializer>]
    [<getter>]
    [<setter>]
复制代码

继承

Kotlin 中所有类都有一个共同的超类 Any,这对于没有超类型声明的类是默认超类:

参考链接 一

猜你喜欢

转载自juejin.im/post/5c1c9cdae51d45206d1239bd