如您所知,变量是内存中用于存储数据的位置(存储区域)。
为了指示存储区域,应该为每个变量赋予唯一的名称(标识符)。了解有关如何在Kotlin中命名变量的更多信息?
如何在Kotlin中声明变量?
要在Kotlin中声明变量,可以使用var
或val
关键字。这是一个例子:
var language = "French"
val score = 95
本文后面将讨论使用var和val的区别。现在,让我们集中讨论变量声明。
在这里, language是String
类型的变量,而score
是Int
类型的变量。您不必指定变量的类型。 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 31
到2 31 -1
(32位带符号的二进制补码整数)。 - 例:
fun main(args : Array) {
val score: Int = 100000
println("$score")
}
运行该程序时,输出为:
100000
如果为变量分配-2 31
到2 31 -1
之间的整数而未明确指定其类型,则该变量将为Int
类型。例如,
fun main(args : Array) {
// score is of type Int
val score = 10
println("$score")
}
如果使用的是IntelliJ IDEA,则可以将光标置于变量内,然后按Ctrl + Shift + P
查看其类型。
4.长
-
Long
数据类型的值可以从-2 63
到2 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.5
是Double
字面量,并且不能将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
数据类型具有两个可能的值,即true
或false
。 - 例:
fun main(args : Array) {
val flag = true
println("$flag")
}
布尔值用于决策语句(将在后面的章节中讨论)。
Kotlin阵列
数组是一个容器,其中保存一种类型的数据(值)。例如,您可以创建一个可以容纳100个Int
类型值的数组。
在Kotlin中,数组由Array
类表示。该类具有get
和set
函数, size
属性以及一些其他有用的成员函数。
要详细了解数组,请访问: Kotlin数组
科特林弦
在Kotlin中, 字符串由String
类表示。诸如“ this is a 字符串 “之类的字符串 字面量被实现为此类的实例。
要详细了解字符串,请访问: Kotlin字符串
推荐读物
- Kotlin中的类型转换
- 科特林的精铸演员
- Kotlin可为空类型