Kotlin语法入门–变量声明(1)
文章目录
- Kotlin语法入门--变量声明(1)
- 一、变量声明
- 1、整型
- 2、字符型
- 3、集合
- 3.1、创建array数组
- 3.2、创建list集合
- 3.3、不可变类型数组
- 3.4、Set集合--不重复添加元素
- 3.5、键值对集合Map
- 4、kotlin特有的数据类型和集合
- 4.1、Any、Nothing
- 4.2、二元组--Pair
- 4.3、三元组--Triple
- 5、const关键字
一、变量声明
1、整型
fun main() {
var b: Int = 1
//var 变量名:变量类型=值
val c=100
//var 常量名:变量类型=值
}
kotlin中的变量是自动推导的,其中变量类型Int是可以省略的。
val常量:
2、字符型
定义就与上面一样,调用的方法也与java差不多,equals等。
占位符:
fun main() {
var string: String = "hello world !"
println("hello ${string}") //输出
}
输出:
多模版输出:
fun main() {
var string: String ="""
1 2 3 4 5 6 7 8 9 10
""".trimIndent() //此方法可以忽略缩进
println(string)
}
3、集合
前景提要:除了数组都分为可变集合和不可变集合,区别就是在前面加上前缀mutable,这是kotlin语法中特有的。
关键字如下:
- array==>arrayof
- list==>listof
- 可变list==>mutableListOf
3.1、创建array数组
fun main() {
var array: Array<Int> = arrayOf<Int>( 1,2,3)
var get = array.get(0)
println(get)
}
以上是常规的创建方法,也可以用自定义的方法,下面以Int为例,其实基本数据类型都是有的。
fun main() {
var array: IntArray = intArrayOf(1, 2, 3) //int数组
var array1: Array<Int> = emptyArray<Int>() // 空数组
}
3.2、创建list集合
fun main() {
var listOf = listOf<Int>( 1, 2, 3)
println(listOf[0]) //获取第1个数据
}
当然,Int前面或者后面写一个就行。上述集合是可变的
3.3、不可变类型数组
fun main() {
var array: IntArray = intArrayOf(1, 2, 3)
var mutableListOf = mutableListOf(1, 2, 3)
array.add() //不可变,没有add()
mutableListOf.add(6) //可变,有add()
}
3.4、Set集合–不重复添加元素
不可变集合的方式:
fun main() {
setOf(1, 2, 3, 3, 3, 3).forEach{ //遍历集合
println(it)
}
}
可变集合的方式:
fun main() {
var mutableSetOf = mutableSetOf(1, 2, 3, 4, 5)
}
3.5、键值对集合Map
中间用to来实现键值对的配对
fun main() {
var mutableMapOf = mutableMapOf("1" to 1, "11" to 11) //多个参数逗号隔开
mutableMapOf.put("2", 2)
mutableMapOf.put("3", 3)
println(mutableMapOf["1"]) //获取键为1的数据
println(mutableMapOf.keys) //keys是获取所有的key的set集合
println(mutableMapOf.keys.size) //数据长度
}
4、kotlin特有的数据类型和集合
4.1、Any、Nothing
Any不再介绍,类似于Java中的Object。
Nothing:没有什么是没有实例的。您可以使用Nothing来表示“一个永远不存在的值”:例如,如果函数的返回类型为Nothing,则意味着它永远不会返回(总是抛出异常)。
可以看kotlin中的null就是这样的一个数据类型:
kotlin中最具有特色的是:不会有空指针存在
例如:Null不能是非Null类型Int的值法一:
法一:
官方推荐写法:
这样后续在调用b的时候就进行了为空的判定,例如:
解释:b在拼接3的时候,?就会进行判定b是否为空,如果b为空那就不会调用plus方法,这样就避免了空指针异常。
(上述输出为null,即调用b.toString()方法输出。)
法二:
还有一点就是b在一定不为空的情况下,则可以使用!!强制赋值,例如:
并且后续使用b调用方法都不用再使用?判定b值是否为空。
法三:
使用lateinit关键字(只能对复杂类型初始化)进行初始化延后,但是不推荐这种写法,类似于欺骗编译器我等一会初始化,例如:
4.2、二元组–Pair
与下面的Triple
一样都是属于kotlin
中特有的数据集合。
fun main() {
var pair = Pair(1, 2)
println("第一个值:${pair.first},第二个值:${pair.second}")
}
4.3、三元组–Triple
fun main() {
Triple(1, 2, 3).let {
println(it.first)
println(it.second)
println(it.third)
}
}
5、const关键字
在Kotlin中,const关键字只能用于以下情况:
- 伴生对象中的属性:const关键字可以用于伴生对象中的属性,将其声明为常量。
- 顶层属性:const关键字可以用于顶层属性,将其声明为常量。
- 原生数据类型和String类型:const关键字只能用于基本数据类型(如Int、Long、Double等)和String类型。
需要注意的是,const关键字所修饰的属性必须在编译时就能确定其值,不能是运行时才能确定的值。
另外,const关键字只能用于编译期常量,而不能用于运行时常量。因此,在使用const关键字时需要遵守以上规则