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

相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
rockmelodies3 天前
# Windows Server2008 R2 Standard(SP1镜像U盘)重置本地管理员密码【完整详细步骤】
windows·密码破解
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
ai2work3 天前
ch23 综合复刻:从零做一个最小可用版本(capstone)
kotlin
ai2work3 天前
ch21 签名、校验与发版
kotlin
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法