随着,谷歌开始大力推行Kotlin之后,慢慢的 Kotlin 在 Android 开发圈里是越来越流行了。从这一篇开始,我也计划开始学习一下这门语言,同时做一下笔记。
首先,先推荐一下 Kotlin 中文网
基本类型
kotlin 也是一门面向对象编程的语言,它里面的所有东西也都是一个个对象。 这篇我们就来说说 kotlin 语言中的基本类型:数字、字符、布尔、字符串。
数字类型
- 整型
Kotlin 提供了一组表示数字的内置类型。 对于整数,有四种不同大小的类型,因此值的范围也不同。
类型 | 大小(Byte) | 最小值 | 最大值 |
---|---|---|---|
Byte | 8 | -128 | 127 |
Short | 16 | -32768 | 32767 |
Int | 32 | -2,147,483,648 (负2的31次方) | 2,147,483,647(2的31次方减1) |
Long | 64 | -9,223,372,036,854,775,808 (负2的63次方) | 9,223,372,036,854,775,807(2的63次方减1) |
在 kotlin 中,它是有自动类型推导的能力
val one = 1 // Int
val threeBillion = 3000000000 // Long
val oneLong = 1L // Long
val oneByte: Byte = 1 //Byte
- 浮点型
kotlin 中提供了Float 单精度
和Double 双精度
类型 | 大小(Byte) |
---|---|
Float | 32 |
Double | 64 |
val pi = 3.14 // Double
val e = 2.7182818284 // Double
val eFloat = 2.7182818284f // Float,实际值为 2.7182817
- 数字转换
每个数字类型支持如下的转换:toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
字符
字符字面值用单引号括起来: '1'。 特殊字符可以用反斜杠转义。 支持这几个转义序列:\t、 \b、\n、\r、'、"、\ 与 $。 编码其他字符要用 Unicode 转义序列语法:'\uFF00'。
我们可以显式把字符转换为 Int 数字:
fun decimalDigitValue(c: Char): Int {
if (c !in '0'..'9')
throw IllegalArgumentException("Out of range")
return c.toInt() - '0'.toInt() // 显式转换为数字
}
布尔
两个值 true
与false
内置的布尔运算有:
- || – 短路逻辑或
- && – 短路逻辑与
- ! - 逻辑非
数组
Array
类来表示数组。
class Array<T> private constructor() {
val size: Int
operator fun get(index: Int): T
operator fun set(index: Int, value: T): Unit
operator fun iterator(): Iterator<T>
// ……
}
使用 arrayOf ()
可以创建数组并传入值。
var a = arrayOf(1, 2, 3)
使用 arrayOfNulls()
可以创建一个指定长的,所有元素都为 null 的数组。
还可以 Array
的构造函数的形式创建数组。
// 创建一个 Array<String> 初始化为 ["0", "1", "4", "9", "16"]
val asc = Array(5) { i -> (i * i).toString() }
asc.forEach { println(it) }
Kotlin 中数组是不型变的(invariant)。这意味着 Kotlin 不让我们把 Array<String>
赋值给 Array<Any>
,以防止可能的运行时失败
原生类型数组
val x: IntArray = intArrayOf(1, 2, 3)
x[0] = x[1] + x[2]
// 大小为 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 }
字符串
String
表示字符串。
val s = "abc"
println("$s.length is ${s.length}") // 输出“abc.length is 3”