原文: https://www.programiz.com/kotlin-programming/variable-types

在本教程中,您将了解变量,如何创建变量以及 Kotlin 支持创建变量的基本数据类型。

如您所知,变量是内存中用于存储数据的位置(存储区域)。

为了指示存储区域,应该为每个变量赋予唯一的名称(标识符)。 了解更多有关如何在 Kotlin 中命名变量的信息?


如何在 Kotlin 中声明变量?

要在 Kotlin 中声明变量,请使用varval关键字。 这是一个例子:

  1. var language = "French"
  2. val score = 95

本文稍后将讨论使用varval的区别。 现在,让我们集中讨论变量声明。

在此,language是类型String的变量,score是类型Int的变量。 您不必指定变量的类型。 Kotlin 暗中为您执行此操作。 编译器通过初始化表达式来知道这一点(在上述程序中,"French"String95是整数)。 这在编程中称为类型推断。

但是,如果要执行以下操作,则可以显式指定类型:

  1. var language: String = "French"
  2. val score: Int = 95

在上面的示例中,我们在声明过程中初始化了变量。 但是,这不是必需的。 您可以在一个语句中声明变量并指定其类型,然后稍后在程序中在另一条语句中初始化变量。

  1. var language: String // variable declaration of type String
  2. ... .. ...
  3. language = "French" // variable initialization
  4. val score: Int // variable declaration of type Int
  5. ... .. ...
  6. score = 95 // variable initialization

以下是一些导致错误的示例。

  1. var language // Error
  2. language = "French"

在此,未明确指定language变量的类型,也未在声明期间初始化该变量。

  1. var language: String
  2. language = 14 // Error

此处,我们试图将 14(整数值)分配给不同类型的变量(String)。


varval之间的区别

  • val(不可变引用) - 一旦分配了值,就无法更改使用val关键字声明的变量。 它类似于 Java 中的最终变量
  • var(可变引用) - 使用var关键字声明的变量可以稍后在程序中更改。 它对应于常规 Java 变量。

以下是一些示例:

  1. var language = "French"
  2. language = "German"

在此,language变量被重新分配给German。 由于该变量是使用var声明的,因此此代码可以完美运行。

  1. val language = "French"
  2. language = "German" // Error

在上面的示例中,您无法将language变量重新分配给German,因为该变量是使用val声明的。


现在,您知道什么是 Kotlin 变量,是时候学习 Kotlin 变量可以采用的不同值了。


Kotlin 原始类型

Kotlin 是一种类似于 Java 的静态类型语言。 也就是说,在编译期间,变量的类型是已知的。 例如,

  1. val language: Int
  2. val marks = 12.3

在此,编译器在编译时间之前就知道languageInt类型的,而marksDouble类型的。

Kotlin 中的内置类型可以分类为:

  • 数字
  • 字符
  • 布尔值
  • 数组

数字类型


Kotlin 中的数字类似于 Java。 有 6 种内置类型代表数字。

  • Byte
  • Short
  • Int
  • Long
  • Float
  • Double

1.Byte


  • Byte数据类型的值可以从 -128 到 127(8 位带符号二进制补码整数)。

  • 如果可以确定某个变量的值在[-128, 127]之内,则可以使用它代替Int或其他整数数据类型来节省内存

  • 示例:

    1. fun main(args : Array<String>) {
    2. val range: Byte = 112
    3. println("$range")
    4. // The code below gives error. Why?
    5. // val range1: Byte = 200
    6. }

运行该程序时,输出为:

  1. 112

2.Short


  • Short数据类型的值可以从 -32768 到 32767(16 位带符号二进制补码整数)。
  • 如果可以确定该变量的值在[-32768, 32767]之内,则可以使用它代替其他整数数据类型来节省内存。
  • 示例:
  1. fun main(args : Array<String>) {
  2. val temperature: Short = -11245
  3. println("$temperature")
  4. }

运行该程序时,输出为:

  1. -11245

3.Int


  • Int数据类型的值可以从-2 ^ 312 ^ 31 -1(32 位带符号的二进制补码整数)。
  • 示例:
  1. fun main(args : Array<String>) {
  2. val score: Int = 100000
  3. println("$score")
  4. }

运行该程序时,输出为:

  1. 100000

如果您在-2^312^31-1之间分配一个整数而未明确指定其类型,则该变量将为Int类型。 例如,

  1. fun main(args : Array<String>) {
  2. // score is of type Int
  3. val score = 10
  4. println("$score")
  5. }

如果使用的是 IntelliJ IDEA,则可以将光标放在变量内,然后按Ctrl + Shift + P查看其类型。
Kotlin 变量和原始类型 - 图1

4.Long


  • Long数据类型的值可以从-2 ^ 632 ^ 63 -1(64 位带符号二进制补码整数)。
  • 示例:
  1. fun main(args : Array<String>) {
  2. val highestScore: Long = 9999
  3. println("$highestScore")
  4. }

运行该程序时,输出为:

  1. 9999

如果为变量分配一个大于2^31-1或小于-2^31的整数值(未明确指定其类型),则该变量将为Long类型。 例如,

  1. val distance = 10000000000 // distance variable of type Long

同样,您可以使用大写字母L来指定变量为Long类型。 例如,

  1. val distance = 100L // distance value of type Long

5.Double


  • Double类型是双精度 64 位浮点。
  • 示例:
  1. fun main(args : Array<String>) {
  2. // distance is of type Double
  3. val distance = 999.5
  4. println("$distance")
  5. }

运行该程序时,输出为:

  1. 999.5

Float


  1. fun main(args : Array<String>) {
  2. // distance is of type Float
  3. val distance = 19.5F
  4. println("$distance")
  5. }

运行该程序时,输出为:

  1. 19.5

请注意,我们在上述程序中使用了19.5F而不是19.5。 这是因为19.5Double字面值,并且您无法将Double值分配给Float类型的变量。

要告诉编译器将19.5视为Float,您需要最后使用F


如果不确定在程序中将分配哪个数字值,可以将其指定为Number类型。 这使您既可以将整数值又可以将浮点值分配给变量(一次分配一个)。 例如:

  1. fun main(args : Array<String>) {
  2. var test: Number = 12.2
  3. println("$test")
  4. test = 12
  5. // Int smart cast from Number
  6. println("$test")
  7. test = 120L
  8. // Long smart cast from Number
  9. println("$test")
  10. }

运行该程序时,输出为:

  1. 12.2
  2. 12
  3. 120

要了解更多信息,请访问: Kotlin 智能转换


Char

为了表示 Kotlin 中的字符,使用了Char类型。

与 Java 不同,char类型不能视为数字。 访问此页面以了解有关 Java char类型的更多信息。

  1. fun main(args : Array<String>) {
  2. val letter: Char
  3. letter = 'k'
  4. println("$letter")
  5. }

运行该程序时,输出为:

  1. k

在 Java 中,您可以执行以下操作:

  1. char letter = 65;

但是,以下代码在 Kotlin 中给出了错误。

  1. var letter: Char = 65 // Error

Boolean

  • Boolean数据类型有两个可能的值,即truefalse
  • 示例:
  1. fun main(args : Array<String>) {
  2. val flag = true
  3. println("$flag")
  4. }

布尔值用于决策语句(将在下一章中讨论)。


Kotlin 数组

数组是一个容器,其中包含一种类型的数据(值)。 例如,您可以创建一个可以容纳 100 个Int类型值的数组。

在 Kotlin 中,数组由Array类表示。 该类具有getset函数,size属性以及其他一些有用的成员函数。

要详细了解数组,请访问: Kotlin 数组


Kotlin 字符串

在 Kotlin 中,字符串由String类表示。 诸如"This is a string."之类的字符串字面值被实现为此类的实例。

要详细了解字符串,请访问: Kotlin 字符串


推荐阅读

  • Kotlin 中的类型转换
  • Kotlin 中的智能转换
  • Kotlin 可空类型