Kotlin 简明教程
Kotlin - Data Types
Kotlin数据类型是对数据的分类,它告诉编译器编程人员如何打算使用数据。例如,Kotlin数据可以是数字、字符串、布尔值等。
Kotlin将所有内容都视为对象,这意味着我们可以在任何变量上调用成员函数和属性。
Kotlin是一种静态类型语言,这意味着每个表达式的类型都应在编译时已知。
Kotlin内置数据类型可分类如下:
-
Number
-
Character
-
String
-
Boolean
-
Array
(a) Kotlin Number Data Types
Kotlin数字数据类型用于定义保存数字值的变量,它们分为两组:(a) Integer types 存储整数,正数或负数(b) Floating point 类型表示带分数部分(包含一个或多个小数点)的数字。
下表列出了所有 Kotlin 数字数据类型、定义其变量类型的关键字、变量占用的内存大小以及可以在这些变量中存储的值范围。
Data Type |
Size (bits) |
Data Range |
Byte |
8 bit |
-128 to 127 |
Short |
16 bit |
-32768 to 32767 |
Int |
32 bit |
-2,147,483,648 to 2,147,483,647 |
Long |
64 bit |
-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807 |
Float |
32 bit |
1.40129846432481707e-45 to 3.40282346638528860e+38 |
Double |
64 bit |
4.94065645841246544e-324 to 1.79769313486231570e+308 |
如果我们试图在特定数据类型的变量中存储一个大于允许值的值,Kotlin 编译器将会报错,因为在运行时会发生溢出。
Example
下面的示例展示了如何定义和访问不同的 Kotlin 数字数据类型:
fun main(args: Array<String>) {
val a: Int = 10000
val d: Double = 100.00
val f: Float = 100.00f
val l: Long = 1000000004
val s: Short = 10
val b: Byte = 1
println("Int Value is " + a)
println("Double Value is " + d)
println("Float Value is " + f)
println("Long Value is " + l )
println("Short Value is " + s)
println("Byte Value is " + b)
}
当你运行上述 Kotlin 程序时,它将生成以下输出:
Int Value is 10000
Double Value is 100.0
Float Value is 100.0
Long Value is 1000000004
Short Value is 10
Byte Value is 1
(b) Kotlin Character Data Type
Kotlin 字符数据类型用于存储单个字符,它们用 Char 关键字表示。Char 值必须用单引号括起来,例如 'A' 或 '1'。
Example
以下示例展示了如何定义和访问 Kotlin Char 数据类型:
fun main(args: Array<String>) {
val letter: Char // defining a Char variable
letter = 'A' // Assigning a value to it
println("$letter")
}
当你运行上述 Kotlin 程序时,它将生成以下输出:
A
Kotlin 支持许多字符转义序列。当一个字符前有反斜杠 (\) 时,它就被称为转义序列,并且它对编译器有特殊含义。例如,以下语句中的 \n 是一个有效字符,称为换行符。
println('\n') //prints a newline character
println('\$') //prints a dollar $ character
println('\\') //prints a back slash \ character
Kotlin 支持以下转义序列:\t、\b、\n、\r、\'、\"、\\ 和 \$。
(c) Kotlin String Data Type
String 数据类型用于存储一组字符。String 值必须用双引号 (" ") 或三引号 (""" """) 括起来。
在 Kotlin 中,我们有两种字符串 - 一种称为 Escaped String ,另一种称为 Raw String 。
-
Escaped string 在双引号 (" ") 中声明,并且可能包含诸如 '\n'、'\t'、'\b' 等转义字符。
-
Raw string 在三引号 (""" """) 中声明,并且可以包含多行文本,而无需任何转义字符。
fun main(args: Array<String>) {
val escapedString : String = "I am escaped String!\n"
var rawString :String = """This is going to be a
multi-line string and will
not have any escape sequence""";
print(escapedString)
println(rawString)
}
当你运行上述 Kotlin 程序时,它将生成以下输出:
I am escaped String!
This is going to be a
multi-line string and will
not have any escape sequence
(d) Kotlin Boolean Data Type
布尔类型非常简单,就像其他编程语言一样。布尔数据类型只有两个值 - true 或 false 。
fun main(args: Array<String>) {
val A: Boolean = true // defining a variable with true value
val B: Boolean = false // defining a variable with false value
println("Value of variable A "+ A )
println("Value of variable B "+ B )
}
当你运行上述 Kotlin 程序时,它将生成以下输出:
Value of variable A true
Value of variable B false
布尔类型有一个可空的对等类型 Boolean? ,它可以存储 null 值,如下所示:
val boolNull: Boolean? = null
(e) Kotlin Array Data Type
Kotlin 数组是同质数据的集合。与为每个值声明单独的变量不同,数组用于在单个变量中存储多个值。
我们将在单独的章节中学习数组,现在让我们看一个示例,以定义一个整数数组,然后访问它的一个元素。
fun main(args: Array<String>) {
val numbers: IntArray = intArrayOf(1, 2, 3, 4, 5)
println("Value at 3rd position : " + numbers[2])
}
当你运行上述 Kotlin 程序时,它将生成以下输出:
Value at 3rd position : 3
Kotlin Data Type Conversion
类型转换是一个将一种数据类型的值转换为另一种类型的值的过程。Kotlin 不支持直接将一种数字数据类型转换为另一种数据类型,例如,无法将 Int 类型转换为 Long 类型:
fun main(args: Array<String>) {
val x: Int = 100
val y: Long = x // Not valid assignment
println(y)
}
当你运行上述 Kotlin 程序时,它将生成以下输出:
main.kt:3:18: error: type mismatch: inferred type is Int but Long was expected
val y: Long = x // Not valid assignment
为了将一种数字数据类型转换为另一种类型,Kotlin 提供了一组函数:
-
toByte()
-
toShort()
-
toInt()
-
toLong()
-
toFloat()
-
toDouble()
-
toChar()
现在让我们再次重写上面的示例并尝试运行它:
fun main(args: Array<String>) {
val x: Int = 100
val y: Long = x.toLong()
println(y)
}
当你运行上述 Kotlin 程序时,它将生成以下输出:
100