Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

数据类型

数据可以有不同的类型

为了解决一个数学问题,你写了一个表达式:

5.9 + 6

你知道将这些数字相加会产生另一个数字。Kotlin也知道这一点。你知道其中一个是一个小数(5.9),Kotlin将其称为Double,而另一个是一个整数(6),Kotlin将其称为Int。你知道结果是一个小数。

类型(也称为数据类型)告诉Kotlin你打算如何使用这些数据。类型提供了一组值,从中表达式可以取得其值。类型定义了可以对数据执行的操作,数据的含义以及如何存储该类型的值。

Kotlin使用类型来验证你的表达式是否正确。在上面的表达式中,Kotlin创建了一个新的Double类型的值来保存结果。

Kotlin试图适应你的需求。如果你要求它执行违反类型规则的操作,它会产生一个错误消息。例如,尝试将一个String和一个数字相加:

// DataTypes/StringPlusNumber.kt

fun main() {
  println("Sally" + 5.9)
}
/* Output:
Sally5.9
*/

类型告诉Kotlin如何正确地使用它们。在这种情况下,类型规则告诉Kotlin如何将一个数字添加到一个String中:通过连接这两个值并创建一个String来保存结果。

现在尝试将StringDouble相乘,将StringPlusNumber.kt中的+改为*

"Sally" * 5.9

这种方式的类型组合对Kotlin来说没有意义,因此它会给出一个错误。

varval中,我们存储了几种类型的值。Kotlin根据我们使用它们的方式推断出了类型。这被称为类型推断

我们可以更明确地指定类型:

val identifier: Type = initialization

你首先使用valvar关键字,然后是标识符,冒号,类型,一个等号和初始化值。所以,不必像这样写:

val n = 1
var p = 1.2

你可以这样写:

val n: Int = 1
var p: Double = 1.2

我们告诉Kotlin n 是一个 Int 类型, p 是一个 Double 类型,而不是让它推断类型。

以下是Kotlin的一些基本类型:

// DataTypes/Types.kt

fun main() {
  val whole: Int = 11              // [1]
  val fractional: Double = 1.4     // [2]
  val trueOrFalse: Boolean = true  // [3]
  val words: String = "A value"    // [4]
  val character: Char = 'z'        // [5]
  val lines: String = """Triple quotes let
you have many lines
in your string"""                  // [6]
  println(whole)
  println(fractional)
  println(trueOrFalse)
  println(words)
  println(character)
  println(lines)
}
/* Output:
11
1.4
true
A value
z
Triple quotes let
you have many lines
in your string
*/
  • [1] Int 数据类型是一个 整数,它只能保存整数。
  • [2] 要保存小数,使用 Double
  • [3] Boolean 数据类型只能保存两个特殊值 truefalse
  • [4] String 保存字符序列。你可以使用双引号的 String 赋值。
  • [5] Char 保存一个字符。
  • [6] 如果你有多行和/或特殊字符,可以用三重双引号括起来(这是一个 三重引号字符串)。

Kotlin使用类型推断来确定混合类型的含义。例如,在加法中混合使用IntDouble时,Kotlin会决定结果值的类型:

// DataTypes/Inference.kt

fun main() {
  val n = 1 + 1.2
  println(n)
}
/* Output:
2.2
*/

当使用类型推断将IntDouble相加时,Kotlin确定结果 n 是一个 Double 类型,并确保它遵循 Double 的所有规则。

Kotlin的类型推断是其为程序员做工作的策略的一部分。如果省略类型声明,Kotlin通常可以推断出类型。

练习和解答可以在www.AtomicKotlin.com找到。