Kotlin语法快速入门--变量声明(1)

Kotlin语法入门--变量声明(1)

文章目录

一、变量声明

1、整型

kotlin 复制代码
fun main() {
    var b: Int = 1
  //var 变量名:变量类型=值
    val c=100
  //var 常量名:变量类型=值
}

kotlin中的变量是自动推导的,其中变量类型Int是可以省略的。

val常量:

2、字符型

定义就与上面一样,调用的方法也与java差不多,equals等。

占位符:

kotlin 复制代码
fun main() {
    var string: String = "hello world !"
    println("hello ${string}") //输出
}

输出:

多模版输出:

kotlin 复制代码
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数组
kotlin 复制代码
fun main() {
    var array: Array<Int> = arrayOf<Int>( 1,2,3)
    var get = array.get(0)
    println(get)
}

以上是常规的创建方法,也可以用自定义的方法,下面以Int为例,其实基本数据类型都是有的。

kotlin 复制代码
fun main() {
    var array: IntArray = intArrayOf(1, 2, 3) //int数组
    var array1: Array<Int> = emptyArray<Int>()  // 空数组
}
3.2、创建list集合
kotlin 复制代码
fun main() {
    var listOf = listOf<Int>( 1, 2, 3)
    println(listOf[0]) //获取第1个数据
}

当然,Int前面或者后面写一个就行。上述集合是可变的

3.3、不可变类型数组
kotlin 复制代码
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集合--不重复添加元素

不可变集合的方式:

kotlin 复制代码
fun main() {
    setOf(1, 2, 3, 3, 3, 3).forEach{ //遍历集合
        println(it)
    }
}

可变集合的方式:

kotlin 复制代码
fun main() {
    var mutableSetOf = mutableSetOf(1, 2, 3, 4, 5)
}
3.5、键值对集合Map

中间用to来实现键值对的配对

kotlin 复制代码
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中特有的数据集合。

kotlin 复制代码
fun main() {
    var pair = Pair(1, 2)
    println("第一个值:${pair.first},第二个值:${pair.second}")
}
4.3、三元组--Triple
kotlin 复制代码
fun main() {
    Triple(1, 2, 3).let {
        println(it.first)
        println(it.second)
        println(it.third)
    }
}

5、const关键字

在Kotlin中,const关键字只能用于以下情况:

  1. 伴生对象中的属性:const关键字可以用于伴生对象中的属性,将其声明为常量。
  2. 顶层属性:const关键字可以用于顶层属性,将其声明为常量。
  3. 原生数据类型和String类型:const关键字只能用于基本数据类型(如Int、Long、Double等)和String类型。

需要注意的是,const关键字所修饰的属性必须在编译时就能确定其值,不能是运行时才能确定的值。

另外,const关键字只能用于编译期常量,而不能用于运行时常量。因此,在使用const关键字时需要遵守以上规则

相关推荐
学步_技术4 分钟前
Python编码系列—Python抽象工厂模式:构建复杂对象家族的蓝图
开发语言·python·抽象工厂模式
wn53128 分钟前
【Go - 类型断言】
服务器·开发语言·后端·golang
Hello-Mr.Wang40 分钟前
vue3中开发引导页的方法
开发语言·前端·javascript
救救孩子把43 分钟前
Java基础之IO流
java·开发语言
WG_1744 分钟前
C++多态
开发语言·c++·面试
宇卿.1 小时前
Java键盘输入语句
java·开发语言
Amo Xiang1 小时前
2024 Python3.10 系统入门+进阶(十五):文件及目录操作
开发语言·python
friklogff1 小时前
【C#生态园】提升C#开发效率:深入了解自然语言处理库与工具
开发语言·c#·区块链
重生之我在20年代敲代码2 小时前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
爱上语文2 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring