Kotlin - 数据类型


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

Kotlin 将所有事物视为对象,这意味着我们可以调用任何变量的成员函数和属性。

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

Kotlin 内置数据类型可分为以下几类:

  • 数字

  • 特点

  • 细绳

  • 布尔值

  • 大批

(a) Kotlin 数字数据类型

Kotlin 数字数据类型用于定义保存数值的变量,它们分为两组: (a)整数类型存储整数,正数或负数 (b)浮点类型表示带有小数部分的数字,包含一个或多个小数点。

下表列出了所有 Kotlin 数字数据类型、定义其变量类型的关键字、变量占用的内存大小以及可以存储在这些变量中的值范围。

数据类型 大小(位) 数据范围
字节 8位 -128 至 127
短的 16位 -32768至32767
INT 32位 -2,147,483,648 至 2,147,483,647
长的 64位 -9,223,372,036,854,775,808 至 +9,223,372,036,854,775,807
漂浮 32位 1.40129846432481707e-45 至 3.40282346638528860e+38
双倍的 64位 4.94065645841246544e-324 至 1.79769313486231570e+308

如果我们尝试在特定数据类型的变量中存储超过允许值的值,Kotlin 编译器会抱怨,因为运行时会发生溢出。

例子

以下示例展示了如何定义和访问不同的 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 字符数据类型

Kotlin 字符数据类型用于存储单个字符,它们由Char关键字表示。Char 值必须用单引号括起来,例如“A”或“1”。

例子

以下示例展示了如何定义和访问 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 字符串数据类型

字符串数据类型用于存储字符序列。字符串值必须用双引号 (" ") 或三引号 (""" """) 括起来。

Kotlin 中有两种可用的字符串 - 一种称为转义字符串,另一种称为原始字符串

  • 转义字符串在双引号 (" ") 内声明,并且可能包含转义字符,如 '\n'、'\t'、'\b' 等。

  • 原始字符串在三引号 (""" """) 内声明,并且可以包含多行文本,没有任何转义字符。

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 布尔数据类型

布尔与其他编程语言一样非常简单。布尔数据类型只有两个值 - 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

布尔值有一个可以为 null 的对应布尔值吗?可以存储值,如下所示:

val boolNull: Boolean? = null

(e) Kotlin 数组数据类型

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 数据类型转换

类型转换是将一种数据类型的值转换为另一种类型的过程。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()

  • 太短()

  • toInt()

  • toLong()

  • 浮动()

  • toDouble()

  • toChar()

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

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

   println(y)
}

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

100

测验时间(面试和考试准备)

问题 1 - Kotlin 布尔变量的值可以为 0:

A - 正确

B - 错误

答案:D

解释

Kotlin 布尔变量不能存储truefalse值,布尔变量中不允许有整数值。

Q 2 - 使用哪种数据类型来定义变量 PI 来存储值 3.14

A - 浮动

B - 双

C-

D - 以上都不是

答案:B

解释

我们将使用Double数据类型来定义 PI 来存储值 3.14。浮点数用于存储像 3.14F 这样的值

问题 3 - Kotlin 字符串的最小长度是多少?

A - 零字符

B - 1 个字符

C - 空值

D - 以上都不是

答案:A

解释

我们可以定义一个具有零个字符的空字符串。

答案:A

解释

这是可用于定义整数的数据类型集(Byte、Short、Int、Long)。浮点型和布尔型不用于定义整数。

答案:D

解释

关于 Kotlin 数据类型的所有给定陈述都是正确的