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关键字时需要遵守以上规则

相关推荐
Kapaseker12 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
A0微声z2 天前
Kotlin Multiplatform (KMP) 中使用 Protobuf
kotlin
alexhilton3 天前
使用FunctionGemma进行设备端函数调用
android·kotlin·android jetpack
lhDream3 天前
Kotlin 开发者必看!JetBrains 开源 LLM 框架 Koog 快速上手指南(含示例)
kotlin
RdoZam3 天前
Android-封装基类Activity\Fragment,从0到1记录
android·kotlin
埃博拉酱3 天前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code
Kapaseker4 天前
研究表明,开发者对Kotlin集合的了解不到 20%
android·kotlin
唐宋元明清21884 天前
.NET 本地Db数据库-技术方案选型
windows·c#
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1234 天前
matlab画图工具
开发语言·matlab