Kotlin 基本类型
Posted xhBruce
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 基本类型相关的知识,希望对你有一定的参考价值。
Kotlin 基本类型
常量与变量
- 可变变量定义:
var <标识符> : <类型> = <初始化值>
- 不可变变量定义:
val <标识符> : <类型> = <初始化值>
⼀次赋值(只读)的局部变量:
val a: Int = 1 // ⽴即赋值
val b = 2 // ⾃动推断出 `Int` 类型
val c: Int // 如果没有初始值类型不能省略
c = 3 // 明确赋值
可变变量:
var x = 5 // ⾃动推断出 `Int` 类型
x += 1
数字
Kotlin 提供了如下的内置类型来表示数字,Kotlin 中字符不是数字
类型 | Bit 宽度 |
---|---|
Double | 64 |
Float | 32 |
Long | 64 |
Int | 32 |
Short | 16 |
Byte | 8 |
数值常量
- 十进制: 123 Long 类型⽤⼤写 L 标记: 123L
- 十六进制: 0x0F
- 二进制: 0b00001011
- 注意:
不支持八进制
Kotlin 同样支持浮点数的常规表示方法:
- 默认 double:123.5 、123.5e10
- Float 用 f 或者 F 标记: 123.5f
数值使用下划线断句
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
数值转换
每个数字类型⽀持如下的转换:
- toByte(): Byte
- toShort(): Short
- toInt(): Int
- toLong(): Long
- toFloat(): Float
- toDouble(): Double
- toChar(): Char
运算
Kotlin支持数字运算的标准集;但对于位运算,没有特殊字符来表示,而只可用中缀方式调用命名函数(只用于 Int 和 Long ):
- shl(bits) ‒ 有符号左移 (Java 的 << )
- shr(bits) ‒ 有符号右移 (Java 的 >> )
- ushr(bits) ‒ 无符号右移 (Java 的 >>> )
- and(bits) ‒ 位与
- or(bits) ‒ 位或
- xor(bits) ‒ 位异或
- inv() ‒ 位非
字符
字符用 Char 类型表示。它们不能直接当作数字比较,但可以数值计算
var c: Char = '1'
println(c.toInt())
println(c - 1)
布尔
布尔⽤ Boolean 类型表⽰,它有两个值:true 和 false。
数组
与 Java 不同的是,Kotlin 中数组是不型变的(invariant)。这意味着 Kotlin 不让我们把 Array 赋值给 Array ,以防止可能的运行时失败
Kotlin 也有无装箱开销的专门的类来表示原生类型数组: ByteArray 、ShortArray 、IntArray 等等。这些类和 Array 并没有继承关系,但是它们有同样的方法属性集。
val x: IntArray = intArrayOf(1, 2, 3)
x[0] = x[1] + x[2]
字符串
字符串用 String 类型表示。字符串是不可变的。字符串的元素(字符)可以使用索引运算符访问: s[i] 。可以⽤ for 循环迭代字符串:
for (c in str) {
print(c)
}
字符串赋值
fun main() {
val s = "Hello, world!\\n"
println(s)
val text = """
for (c in "foo")
print(c)
"""
println(text)
val text2 = """
|for (c in "foo")
| print(c)
""".trimMargin()
println(text2)
}
通过 trimMargin()
函数去除前导空格,默认 |
用作边界前缀,但你可以选择其他字符并作为参数传入trimMargin(">")
字符串模板
字符串可以包含模板表达式 ,即⼀些小段代码,会求值并把结果合并到字符串中。模板表达式以美元符( $
)开头,由一个简单的名字构成;或者用花括号
扩起来的任意表达式:
fun main() {
val i = 10
val s = "i = $i" // 求值结果为 "i = 10"
println(s)
println("i = $i")
val s2 = "abc"
val str = "$s2.length is ${s2.length}" // 求值结果为 "abc.length is 3"
println(str)
println("$s2.length is ${s2.length}")
}
这里发现print
与Java不同,不可直接用+
连接输出字符串
以上是关于Kotlin 基本类型的主要内容,如果未能解决你的问题,请参考以下文章