# Kotlin 变量

> 原文： [http://zetcode.com/kotlin/variables/](http://zetcode.com/kotlin/variables/)

Kotlin 变量教程展示了如何在 Kotlin 中使用变量。

Kotlin 是在 Java 虚拟机上运行的静态类型的编程语言。 每个表达式的类型在编译时都是已知的。

变量是存储数据的地方。 变量具有名称和数据类型。 数据类型确定可以为变量分配哪些值。 Kotlin 具有以下基本类型：`Double`，`Float`，`Long`，`Int`，`Short`和`Byte`。

## Kotlin 变量

Kotlin 中有两种类型的变量：只读和可变。 只读变量（或常量）用`val`声明，并用`var`可变。

## Kotlin 数据类型推断

Kotlin 可以从分配的右侧推断变量的数据类型。 仅当推迟分配时，数据类型才是必需的。

```kt
val word = "cloud"
val word: String = "cloud"

```

数据类型遵循标识符和 Kotlin 中的冒号。

## Kotlin 变量示例

下面的示例创建两个变量。

`KotlinVariables.kt`

```kt
package com.zetcode

fun main(args: Array<String>) {

    val word = "influence"
    println(word)

    var word2 = "sunshine"
    println(word2)

    word2 = "rain"
    println(word2)
}

```

有一个只读变量和一个可变变量。

```kt
val word = "influence"

```

使用`val`关键字，我们定义了一个只读变量。 其值以后无法在程序中更改。 数据类型为 String，这是从赋值右侧的字符串文字推断出来的。

```kt
var word2 = "sunshine"
println(word2)

word2 = "rain"
println(word2)

```

使用`var`关键字，我们定义了一个可变变量。 稍后在程序中修改变量的值。

```kt
influence
sunshine
rain

```

这是程序的输出。

## Kotlin 变量延迟赋值

在下面的示例中，我们在声明变量后推迟变量的赋值。

`KotlinVariableDeffered.kt`

```kt
package com.zetcode

fun main(args: Array<String>) {

    val input: String?

    print("Enter something: ")
    input = readLine()

    println(input)
}

```

该示例从用户读取输入。

```kt
val input: String?

```

我们声明一个`String`数据类型的变量。 后面的问号告诉 Kotlin 该变量可以为 null。 这次必须显式提供数据类型。

```kt
print("Enter something: ")

```

我们向用户打印提示。

```kt
input = readLine()

```

使用`readLine()`从用户读取输入。 目前，我们已经为`input`变量分配了一个值。

## Kotlin 属性

在类中创建的变量是属性。 只读变量具有默认访问器和可变变量访问器和变异器。

`KotlinProperties.kt`

```kt
package com.zetcode

class Person {

    var name:String = ""
    var age:Int = 0

    override fun toString(): String {
        return "Person(name='$name', age=$age)"
    }
}

fun main(args: Array<String>) {

    val p1 = Person()
    p1.name = "Peter"
    p1.age = 23

    println(p1)
}

```

在示例中，我们有一个`Person`类，具有两个属性：`name`和`age`。

```kt
var name:String = ""
var age:Int = 0

```

我们有两个可变属性。

```kt
override fun toString(): String {
    return "Person(name='$name', age=$age)"
}

```

我们重写`toString()`方法以获得`Person`对象的字符串表示形式。

```kt
val p1 = Person()
p1.name = "Peter"
p1.age = 23

```

创建一个`Person`对象。 我们设置两个属性。

```kt
Person(name='Peter', age=23)

```

这是输出。

在本教程中，我们使用了 Kotlin 中的变量。 您可能也对相关教程感兴趣： [Kotlin 列表教程](/kotlin/lists/)， [Kotlin 运算符教程](/kotlin/operators/)， [Kotlin 字符串教程](/kotlin/strings/)， [Kotlin 控制流教程](/kotlin/controlflow/) ， [Kotlin 数组教程](/kotlin/arrays/)， [Kotlin 读取文件教程](/kotlin/readfile/)和 [Kotlin 写入文件教程](/kotlin/writefile/)。