基本数据类型
Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。
类型 | 位宽度 |
---|---|
Byte | 8 |
Short | 16 |
Int | 32 |
Long | 64 |
Float | 32 |
Double | 64 |
类型转换
较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型
- toByte(): 转换为 Byte 类型
- toShort(): 转换为 Short 类型
- toInt(): 转换为 Int 类型
- toLong(): 转换为 Long 类型
- toFloat(): 转换为 Float 类型
- toDouble(): 转换为 Double 类型
- toChar(): 转换为 Char 类型
val b : Byte = 1
// val i :Int = b 报错 error: type mismatch: inferred type is Byte but Int was expected
val i :Int = b.toInt() // val i :Int = b
val l = 1L + 3 // Long + Int => Long 这是正确的
布尔
Boolean 类型表示,它有两个值:true 和 false。
位操作符
- shl(bits) – 左移位 (Java’s <<)
- shr(bits) – 右移位 (Java’s >>)
- ushr(bits) – 无符号右移位 (Java’s >>>)
- and(bits) – 与
- or(bits) – 或
- xor(bits) – 异或
- inv() – 反向
比较两个数字
Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。
val a = 6666
print(a === a)
true
// 经过了装箱,创建了两个不同的对象
val boxedA: Int? = a
val anotherBoxedA: Int? = a
// 虽然经过了装箱,但是值是相等的,都是 6666
println(boxedA === anotherBoxedA) // false,值相等,对象地址不一样
false
println(boxedA == anotherBoxedA) // true,值相等
true
数组
ByteArray, ShortArray, IntArray
数组用类 Array 实现,并且还有一个 size 属性及 get 和 set 方法,由于使用 [] 重载了 get 和 set 方法,通过下标获取或者设置数组对应位置的值。
数组的创建两种方式:一种是使用函数 arrayOf();另外一种是使用工厂函数。
// 数组的两种创建方式
// 1:[1,2,3]
val a = arrayOf(1, 2, 3)
// 2:[0,2,4]
val b = Array(3, { i -> (i * 2) })
// 取值
println(a[0]) // 输出结果:1
println(b[1]) // 输出结果:2
字符串
val str = "str"
for (s in str) {
print(s)
}
str
// 多行字符串
val str = """
字符串
字符串
字符串
字符串
"""
print(str)
字符串
字符串
// 删除多余的空格
print(str.trimMargin())
字符串
字符串
字符串模板(插值)
字符串可以包含模板表达式 ,即一些小段代码,会求值并把结果合并到字符串中。 模板表达式以美元符($)开头,由一个简单的名字构成:
val name = "Example"
println("name is $name")
name is Example
println("name is $name, name length is ${name.length}")
name is Example, name length is 7
// 在原生字符串中表示字面值 $ 字符
val price = "${'$'}0.66"
println(price)
$0.66