📜  Kotlin变量和基本类型

📅  最后修改于: 2020-10-05 15:00:50             🧑  作者: Mango

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

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

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


如何在Kotlin中声明变量?

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

var language = "French"
val score = 95

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

在这里, languageString类型的变量,而scoreInt类型的变量。您不必指定变量的类型。 Kotlin暗中为您执行此操作。编译器通过初始化表达式来知道这一点( “ French”String ,而在上面的程序中95是整数)。这在编程中称为类型推断。

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

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

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

var language: String      // variable declaration of type String
... .. ...
language = "French"       // variable initialization

val score: Int          // variable declaration of type Int 
... .. ...
score = 95             // variable initialization 

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

var language           // Error 
language = "French"

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

var language: String
language = 14         // Error

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


var和val之间的区别

  • val (不可变参考)-赋值后,不能更改使用val关键字声明的变量。它类似于Java中的final变量
  • var (可变参考)-使用var关键字声明的变量可以稍后在程序中更改。它对应于常规Java变量。

以下是一些示例:

var language = "French"
language = "German"     

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

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

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


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


Kotlin基本类型

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

val language: Int
val marks = 12.3

在这里,编译器在编译之前就知道语言Int类型,而标记Double类型。

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

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

号码类型


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

  • 字节
  • 整数
  • 浮动
1.字节

  • Byte数据类型的值可以从-128到127(8位带符号二进制补码整数)。
  • 如果可以确定变量的值在[-128,127]之内,则可以使用它代替Int或其他整数数据类型来节省内存。
  • 例:
    fun main(args : Array) {
        val range: Byte = 112
        println("$range")
    
        // The code below gives error. Why?
        // val range1: Byte = 200
    }

运行该程序时,输出为:

112
2.简短

  • Short数据类型的值可以从-32768到32767(16位带符号二进制补码整数)。
  • 如果可以确定变量的值在[-32768,32767]之内,则可以使用它代替其他整数数据类型来节省内存。
  • 例:
fun main(args : Array) {

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

运行该程序时,输出为:

-11245
3.诠释

  • Int数据类型的值可以从-2 312 31 -1 (32位带符号的二进制补码整数)。
  • 例:
fun main(args : Array) {

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

运行该程序时,输出为:

100000

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

fun main(args : Array) {

   // score is of type Int
    val score = 10
    println("$score")
}

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

4.长

  • Long数据类型的值可以从-2 632 63 -1 (64位带符号的二进制补码整数)。
  • 例:
fun main(args : Array) {

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

运行该程序时,输出为:

9999

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

val distance = 10000000000  // distance variable of type Long

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

val distance = 100L    // distance value of type Long
5.双倍

  • Double类型是双精度64位浮点。
  • 例:
fun main(args : Array) {

    // distance is of type Double
    val distance = 999.5
    println("$distance")
}

运行该程序时,输出为:

999.5
浮动

  • Float数据类型是单精度32位浮点。如果您有兴趣,请进一步了解单精度和双精度浮点。
  • 例:
fun main(args : Array) {

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

运行该程序时,输出为:

19.5

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

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


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

fun main(args : Array) {

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

    test = 12
    // Int smart cast from Number
    println("$test")

    test = 120L
    // Long smart cast from Number
    println("$test")
}

运行该程序时,输出为:

12.2
12
120

要了解更多信息,请访问: Kotlin smart casts


烧焦

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

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

fun main(args : Array) {

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

运行该程序时,输出为:

k

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

char letter = 65;

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

var letter: Char = 65  // Error

布尔型
  • Boolean数据类型具有两个可能的值,即truefalse
  • 例:
fun main(args : Array) {

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

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


Kotlin阵列

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

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

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


科特林弦

在Kotlin中, 字符串由String类表示。诸如“ this is a 字符串 “之类的字符串 字面量被实现为此类的实例。

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


推荐读物

  • Kotlin中的类型转换
  • 科特林的精铸演员
  • Kotlin可为空类型