原文: https://beginnersbook.com/2017/12/kotlin-variables-data-types/
有两种类型的变量 - 可变和不可变。不可变变量是不能更改其值的变量,也称为不可变或只读变量。另一方面,可变变量的值可以改变。
不可变变量:val关键字
在 Kotlin 中使用val关键字声明不可变变量。在这个例子中,我们使用val关键字声明了一个不可变变量myName,后来显示了它的值。
/*** created by Chaitanya for Beginnersbook.com*/package beginnersbookfun main(args : Array<String>){/*** This is an immutable variable* also called unchangeable variable* or read-only variable.*/val myName = "Chaitanya"println("My Name is: "+myName)}
输出:

当我们尝试更改不可变变量的值时会发生什么?
如果我们尝试更改不可变变量的值,我们将得到一个编译错误,就像我们在下面的例子中得到的那样。
/*** created by Chaitanya for Beginnersbook.com*/package beginnersbookfun main(args : Array<String>){/*** This is an immutable variable* also called unchangeable variable* or read-only variable.*/val myName = "Chaitanya"myName="Chaitanya Singh"println("My Name is: "+myName)}
输出:
Error:(13, 5) Kotlin: Val cannot be reassigned
可变变量:var关键字
与不可变变量不同,我们可以更改可变变量的值。在 kotlin 中,我们使用var关键字来声明一个可变变量。让我们举一个例子来理解这一点。
在这个例子中,我们使用var关键字声明了一个可变变量,为了证明我们可以改变它的值,我们已经为myName变量重新分配了一个不同的值。
/*** created by Chaitanya for Beginnersbook.com*/package beginnersbookfun main(args : Array<String>){/*** This is an mutable variable* we can change the value of this* variable*/var myName = "Chaitanya"myName="Chaitanya Singh"println("My Name is: "+myName)}
输出:

什么是变量?
变量是一个名称,赋予内存中可以保存数据的位置。例如,当我声明这样的变量时:
var website = "beginnersbook"
数据"beginnersbook"存储在特定位置的存储器中,称为website。
这里var是一个用于声明变量的关键字,website是一个标识符(变量的名称),"beginnersbook"是数据(变量的值),变量的类型是String(我们稍后会讨论) 。
另请阅读: Kotlin 关键字和标识符。
类型推断
正如我们前面提到的,我们可以在单个语句中声明和初始化变量,如下所示:
var website = "beginnersbook"
在上面的语句中我们没有指定变量的类型,kotlin 知道变量website是一个字符串。编译器可以通过查看值来了解变量的类型。
但是,如果您想明确提及变量的类型,那么您可以这样做:
var website: String = "beginnersbook"
这里我们已经明确地将变量website的类型称为String。
首先声明并稍后初始化:
我们可以先声明变量,然后我们可以在程序中稍后初始化它。这里要注意的重点是,我们这样做,你必须在声明期间指定变量的类型。
//It is mandatory to specify the type in this casevar website: Stringwebsite = "beginnersbook"
Kotlin 数据类型
- 数字 -
Byte,Short,Int,Long,Float,Double Boolean-true,falseCharArrayString
数字
我们有几种数据类型来表示 Kotlin 中的数字。
1.字节
字节数据类型的范围是 -128 到 127.这用于表示较小的整数值。
fun main(args : Array) {val num: Byte = 99println("$num")}
输出:
99
您必须了解数据类型的范围以避免错误。例如,以下代码将生成错误,因为分配给byte类型的变量的值不在该范围内。
fun main(args : Array) {//Range is -128 to 127val num: Byte = 300println("$num")}
输出:错误
我们也可以知道数据类型的最小值和最大值,如下所示:
/*** created by Chaitanya for Beginnersbook.com*/package beginnersbookfun main(args : Array<String>){var bigByte: Byte = Byte.MAX_VALUEvar smallByte: Byte = Byte.MIN_VALUEprintln("Biggest Byte value is: " + bigByte)/*** I can use String interpolation and put* the variable inside quotes to display its* value*/println("Smallest Byte value is: $smallByte")}
输出:

2.Short
Short数据类型的范围是-32768 到 32767。
fun main(args : Array) {val num: Short = 29999println("$num")}
输出:
29999
您可能想知道我们何时在
Short数据类型中有更大的范围,为什么我们使用Byte数据类型?
这是为了节省内存。与字节数据类型相比,短数据类型保留更多内存,因此如果您确定该值将在-128 到 127 的限制内,则从内存角度来看,字节数据类型将是更好的选择
Int
Int数据类型的范围是-2 ** 31到2 ** 31 - 1
fun main(args : Array) {val num: Int = 123456println("$num")}
输出:
123456
注意:如果你没有明确指定变量的类型,那么编译器会将该变量视为Int,如果值介于-2 ** 31到2 ** 31 - 1
Long
Long数据类型的范围是-2 ** 63到2 ** 63 - 1
fun main(args : Array) {val num: Long = 12345678println("$num")}
输出:
12345678
注意:如果没有明确指定变量的类型,那么编译器会将该变量视为 Long,如果该值超出-2 ** 31到2 ** 31 - 1但位于-2 ** 63到2 ** 63 - 1的范围内
5.Double
fun main(args : Array) {// all floating numbers are double by default// unless you suffix the value with F letterval num = 101.99println("$num")}
输出:
101.99
6.Float
fun main(args : Array) {// This is a float data type as we have suffixed// the value with letter 'F'val num = 101.99Fprintln("$num")}
输出:
101.99
Boolean
布尔变量的值为true或false。
fun main(args : Array) {val boolValue = falseprintln("$boolValue")}
输出:
false
Char
所有英文字母(小写或大写)都包含在Char数据类型中。您不能将数字分配给Char数据类型的变量。
fun main(args : Array) {val ch = 'A'println("$ch")val ch2: Charch2 = 'Z'println("$ch2")}
输出:
AZ
