Kotlin 简明教程

Kotlin - Data Types

Kotlin数据类型是对数据的分类,它告诉编译器编程人员如何打算使用数据。例如,Kotlin数据可以是数字、字符串、布尔值等。

Kotlin将所有内容都视为对象,这意味着我们可以在任何变量上调用成员函数和属性。

Kotlin是一种静态类型语言,这意味着每个表达式的类型都应在编译时已知。

Kotlin内置数据类型可分类如下:

  1. Number

  2. Character

  3. String

  4. Boolean

  5. 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

  1. Escaped string 在双引号 (" ") 中声明,并且可能包含诸如 '\n'、'\t'、'\b' 等转义字符。

  2. 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

布尔类型非常简单,就像其他编程语言一样。布尔数据类型只有两个值 - truefalse

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 提供了一组函数:

  1. toByte()

  2. toShort()

  3. toInt()

  4. toLong()

  5. toFloat()

  6. toDouble()

  7. toChar()

现在让我们再次重写上面的示例并尝试运行它:

fun main(args: Array<String>) {
   val x: Int = 100
   val y: Long = x.toLong()

   println(y)
}

当你运行上述 Kotlin 程序时,它将生成以下输出:

100