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

devtools/2024/11/30 14:40:15/

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、整型

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

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

image-20240416181830036

val常量:image-20240416181934611

2、字符型

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

占位符:

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

输出:image-20240416182642981

多模版输出:

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()
}

image-20240416184257482

3.4、Set集合–不重复添加元素

不可变集合的方式:

kotlin">fun main() {setOf(1, 2, 3, 3, 3, 3).forEach{ //遍历集合println(it)}
}

image-20240416184742799

可变集合的方式:

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) //数据长度
}

image-20240416190358479

kotlin_140">4、kotlin特有的数据类型和集合

4.1、Any、Nothing

Any不再介绍,类似于Java中的Object。

Nothing:没有什么是没有实例的。您可以使用Nothing来表示“一个永远不存在的值”:例如,如果函数的返回类型为Nothing,则意味着它永远不会返回(总是抛出异常)。

可以看kotlin中的null就是这样的一个数据类型:

image-20240416192010836

kotlin中最具有特色的是:不会有空指针存在

例如:Null不能是非Null类型Int的值法一:image-20240416193148945

法一:

官方推荐写法:image-20240416193258963

这样后续在调用b的时候就进行了为空的判定,例如:image-20240416193600947

解释:b在拼接3的时候,?就会进行判定b是否为空,如果b为空那就不会调用plus方法,这样就避免了空指针异常。

(上述输出为null,即调用b.toString()方法输出。)

法二:

还有一点就是b在一定不为空的情况下,则可以使用!!强制赋值,例如:image-20240416194204311

并且后续使用b调用方法都不用再使用?判定b值是否为空。

法三:

使用lateinit关键字(只能对复杂类型初始化)进行初始化延后,但是不推荐这种写法,类似于欺骗编译器我等一会初始化,例如:image-20240416194813610

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


http://www.ppmy.cn/devtools/4825.html

相关文章

红黑树(Red-Black Tree)

红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉查找树&#xff0c;它具有以下特性&#xff1a; 1. 每个节点要么是红色&#xff0c;要么是黑色。 2. 根节点是黑色的。 3. 每个叶子节点&#xff08;NIL节点&#xff09;是黑色的。 4. 如果一个节点是红色的&am…

安全地创建一个临时文件 - mkstemp

安全地创建一个临时文件 - mkstemp 在我们处理一些敏感数据的时候&#xff0c;可能必须要临时存储在文件中&#xff0c;这个时候就需要创建临时文件&#xff1b; 在我们需要临时创建一些大量的中间数据&#xff0c;并且在程序结束时删除这些文件时&#xff0c;我们就需要创建临…

软考131-上午题-【软件工程】-软件可靠性、可用性、可维护性

可靠性、可用性和可维护性是软件的质量属性&#xff0c;软件工程中&#xff0c;用 0-1 之间的数来度量。 0.66 66% 1、 可靠性 可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。 可以用 MTTF/ (1MTTF) 来度量&#xff0c;其中 MTTF 为平均无故障时间…

Python和R概率统计算法建模评估气象和运动

&#x1f3af;要点 概率统计数学&#xff1a;&#x1f3af;Python和R计算和算法实现气象学&#xff1a; 计算和可视化&#xff1a;&#x1f3af;全球陆地-海洋平均年平均表面温度&#xff1a;&#x1f58a;直方图温度异常&#xff0c;&#x1f58a;显示分位数-分位数&#xff…

postman 调试 传base64字符串 原来选xml

上个图 工具类 package org.springblade.common.utils;import com.alibaba.fastjson.JSONObject; import org.springblade.modules.tc.mas.Submit;import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStrea…

csdn的编写教程(官方给的)

自定义的目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚…

Axios的简明教程

Axios是什么&#xff1f; Axios是一个基于promise的HTTP客户端&#xff0c;可以在浏览器和node.js中使用。它提供了一种简单的方法来发送异步HTTP请求。与其他HTTP库&#xff08;如Fetch&#xff09;相比&#xff0c;Axios提供了更丰富的功能和更好的错误处理。例如&#xff0…

探索C语言数据结构:利用顺序表完成通讯录的实现

在好久之前我就已经学习过顺序表&#xff0c;但是在前几天再次温习顺序表的时候&#xff0c;我惊奇的发现顺序编表可以完成我们日常使用的通讯录的功能&#xff0c;那么今天就来好好通过博客总结一下通讯录如何完成吧。 常常会回顾努力的自己&#xff0c;所以要给自己的努力留…