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

相关推荐
香蕉可乐荷包蛋13 分钟前
Python面试问题
开发语言·python·面试
ErizJ23 分钟前
Golang|分布式索引架构
开发语言·分布式·后端·架构·golang
.生产的驴24 分钟前
SpringBoot 接口国际化i18n 多语言返回 中英文切换 全球化 语言切换
java·开发语言·spring boot·后端·前端框架
八股文领域大手子32 分钟前
深入浅出限流算法(三):追求极致精确的滑动日志
开发语言·数据结构·算法·leetcode·mybatis·哈希算法
donglxd37 分钟前
老电脑优化全知道(包括软件和硬件优化)
运维·windows·系统安全
几度泥的菜花1 小时前
优雅实现网页弹窗提示功能:JavaScript与CSS完美结合
开发语言·javascript·css
weixin_307779131 小时前
AWS Glue ETL设计与调度最佳实践
开发语言·数据仓库·云计算·etl·aws
兜小糖的小秃毛2 小时前
文号验证-同时对两个输入框验证
开发语言·前端·javascript
anqi272 小时前
如何在 IntelliJ IDEA 中编写 Speak 程序
java·大数据·开发语言·spark·intellij-idea
XuX032 小时前
MATLAB小试牛刀系列(1)
开发语言·matlab