编辑这个页面须要登录或更高权限!

Kotlin 变量和基本类型

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

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

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

如何在Kotlin中声明变量?

要在 Kotlin 中声明变量,请使用 var 或 val关键字。这是一个实例:

var language = "French"
val score = 95

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

这里,language 是String类型的变量,score 是Int类型的变量。 您不必指定变量的类型;Kotlin 会隐式为您指定类型。 编译器通过初始化式表达式(上面程序中,“French”是字符串,而95是整数值)知道这一点。 这在编程中称为 类型推断

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

var language: String = "French"
val score: Int = 95

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

var language: String      //String 类型的变量声明
... .. ...
language = "French"       //变量初始化

val score: Int          //Int 类型的变量声明
... .. ...
score = 95             //变量初始化

以下是一些错误的示例。

var language           // Error 
language = "French"

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

var language: String
language = 14         // Error

此处,我们尝试将14(整数值)分配给不同类型(String)的变量,也会抛出错误。

var 和 val 之间的区别

  • val(不可变引用)- 赋值后,无法更改使用val关键字声明的变量。 它类似于Java中的 final变量。

  • var(可变引用)- 使用var关键字声明的变量可以稍后在程序中更改。它对应于常规的Java变量。

以下是一些示例:

var language = "French"
language = "German"

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

val language = "French"
language = "German"      // Error

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

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

Kotlin 基本类型

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

val language: Int
val marks = 12.3

在这里,编译器知道 language 类型为 Int,并且在编译之前marks为类型 Double。

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

  • Numbers(数字)

  • Characters(字符)

  • Booleans(布尔)

  • Arrays(数组)

Kotlin 数字类型(Numbers)

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

  • Byte

  • Short

  • Int

  • Long

  • Float

  • Double

1、Byte 类型

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

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

fun main(args : Array<String>) {
    val range: Byte = 112
    println("$range")

    // 下面的代码显示错误。 为什么?
    // val range1: Byte = 200
}

运行该程序时,输出为:

112

2、Short 类型

  • Short 数据类型的值范围从 -32768 到 32767 (16位有符号二进制补码整数)。

  • 如果可以确定该变量的值在[-32768,32767]之内,则可以使用它代替其他整数数据类型来节省内存。

fun main(args : Array<String>) {

    val temperature: Short = -11245
    println("$temperature")
}

运行该程序时,输出为:

-11245

3、Int 类型

  • Int 数据类型的值范围从-231 到 231-1(32位带符号二进制补码整数)。

fun main(args : Array<String>) {

    val score: Int =  100000
    println("$score")
}

运行该程序时,输出为:

100000

如果您为变量分配 -231 至 231-1之间的整数而未明确指定其类型,则该变量将为Int类型。 例如,

fun main(args : Array<String>) {

   // score 是Int类型
    val score = 10
    println("$score")
}

如果使用的是IntelliJ IDEA,则可以将光标置于变量内,然后按 Ctrl + Shift + P 查看其类型。
在IntelliJ IDEA中查看变量的类型

4、Long 类型

  • Long数据类型值的范围从 -263 到 263-1(64位符号的二进制补码整数)。

fun main(args : Array<String>) {

    val highestScore: Long = 9999
    println("$highestScore")
}

运行该程序时,输出为:

9999

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

val distance = 10000000000  //  Long类型的变量distance

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

val distance = 100L    // Long类型的distance 值

5、Double 类型

  • Double类型是双精度64位浮点。

fun main(args : Array<String>) {

    // distance为Double类型
    val distance = 999.5
    println("$distance")
}

运行该程序时,输出为:

999.5

6、Float 类型

  • Float数据类型是单精度的32位浮点。

fun main(args : Array<String>) {

    // distance is of type Float
    val distance = 19.5F
    println("$distance")
}

运行该程序时,输出为:

19.5

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

要编译器 将 19.5 视作为 Float,则您需要在最后使用F。

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

fun main(args : Array<String>) {

    var test: Number = 12.2
    println("$test")

    test = 12
    // Number 智能转换为 Int
    println("$test")

    test = 120L
    // Number 智能转换为 Long
    println("$test")
}

运行该程序时,输出为:

12.2
12
120

Kotlin 字符类型(Char)

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

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

fun main(args : Array<String>) {

    val letter: Char
    letter = 'k'
    println("$letter")
}

运行该程序时,输出为:

k

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

char letter = 65;

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

var letter: Char = 65  // Error

Kotlin 布尔类型(Boolean)

  •  Boolean 数据类型有两个可能的值:  true 或  false。

fun main(args : Array<String>) {

    val flag = true
    println("$flag")
}

布尔值用于决策语句(将在后面的章节中讨论)。

Kotlin 数组(Array)

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

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

Kotlin 字符串(String)

在Kotlin中,字符串由String类表示。诸如此类的字符串文字"this is a string" 被实现为此类的实例。