本文最后更新于:1 个月前

Keywords:==、===、显示转换、inv() 位非、arrayOf()、标签 @

基本类型

数字

  • Float 6-7 位十进制数,Double 15-16 位十进制数。
  • Kotlin 的数字没有隐式拓宽转换,如果需要可以使用显示转化。
  • 数字字面值中可以加入分隔的下划线。
  • 可空引用或泛型会把数字装箱。数字装箱**不一定保留同一性(===)。但保留了相等性(==)。
  • 显示转换:toByte() toShort() toInt() toLong() toFloat() toDouble() toChar()
  • 整数除法总是返回整数,想要返回浮点类型,需要把其中一个参数显示转换为浮点类型。
  • 位运算:shl() 有符号左移,shr() 有符号右移,ushr() 无符号右移,inv() 非。

数组

  • 数组是不型变de,arrayOf() 库函数创建数组,arrayOfNulls() 创建所有元素为空的数组,或者接受数组大小以及一个函数参数得 Array 构造函数,用作参数得函数能够返回给定索引得每个元素初始值:
// 创建一个 Array<String> 初始化为 ["0", "1", "4", "9", "16"]
val asc = Array(5) { i -> (i * i).toString() }
asc.forEach { println(it) }
  • Kotlin 也有无装箱开销的专门的类来表示原生类型数组,这些类与 Array 没有继承关系,但有同样的方法属性集,也有对用的工厂方法:
val x: IntArray = intArrayOf(1, 2, 3)

// 大小为 5、值为 [0, 0, 0, 0, 0] 的整型数组
val arr = IntArray(5)

// 例如:用常量初始化数组中的值
// 大小为 5、值为 [42, 42, 42, 42, 42] 的整型数组
val arr = IntArray(5) { 42 }

// 例如:使用 lambda 表达式初始化数组中的值
// 大小为 5、值为 [0, 1, 2, 3, 4] 的整型数组(值初始化为其索引值)
var arr = IntArray(5) { it * 1 }

字符串

  • 字符串是不可变的,可以使用索引运算符访问:s[i]
  • 原始字符串使用三个引号(""")括起来,内部没有转义并且可以包括换行以及任何其他字符。
  • 使用 trimMargin() 函数去除前导空格,默认 | 用作边界前缀,但你可以选择其他字符并作为参数传入,比如 trimMargin(">")
val text = """
    |Tell me and I forget.
    |Teach me and I remember.
    |Involve me and I learn.
    |(Benjamin Franklin)
    """.trimMargin()

返回和跳转

在 Kotlin 中任何表达式都可以用标签(label)来标记。 标签的格式为标识符后跟 @ 符号,例如:abc@fooBar@都是有效的标签(参见语法)。 要为一个表达式加标签,我们只要在其前加标签即可。