Kotlin之基本类型

1,351 阅读3分钟

前言

Kotlin使用对于目前的存量Android开发者而言是必不可少的了,即使你所在公司还是以Java开发项目为主,但只要有一天你需要出去面试,那熟悉Kotlin则是必不可少的加分项或者是硬性要求。小弟所在的公司大体还是以Java开发的项目为主,只有在2021年初使用Kotlin开发了一个新的项目,并接触到了Kotlin的协程,感悟是:必须全面拥抱kotlin!!!过去一年挺忙,没有太多机会再写Kotlin,好多东西都忘得七七八八,趁现在刚过完年,项目需求还没有压迫过来,再看一下以前学习笔记以加深记忆。这里只是记录一下学习的过程,方便以后再看,如果有初学者看到,希望大家可以一起学习。

var和val关键字

val和var是声明变量的关键字,在Java中我们声明一个变量的格式是: int a = 2; 而在Kotlin中声明变量使用var或者val关键字: val a:Int = 2 或者 var a:Int = 2

kotlin的语法是可以类型推导 ,亦可简写成,所以一般可以简写成:

val str = "Kt Study"

这样系统就默认帮我买指定了这个str是String类型

val和var声明变量的区别:

val:只读变量,运行时常量,有get方法,没有set方法,不可赋值;var:可读写变量 默认加上了get和set方法。

val a = 2
val b = a //把a赋值给b是允许的 
a = 10 //错误写法 a不能赋值

Kotlin中不能把一个Int类型变量的值赋给Long变量(Java中是允许的)

val a = 2
//val b:Long = a //这种写法是不允许的,idea也会提示错误
val b:Long = a.toLong() // 正确写法

字符串

Kotlin中字符串和字符串变量的拼接不同于Java直接用+号连接,而是使用$符号引用,如下:

val kt = "Kotlin"
println("全面学习$kt")
rintln("kt length is: $kt.length")
println("kt length is: ${kt.length}")

Kotlin中比较两个字符串内容是否相等直接用==号,比较引用的时候用===号,区别于java的equals()比较内容,==号比较引用

val m = "好好学习Kotlin"
val n = String("好好学习Kotlin".toCharArray())
println("m和n引用是否一样:${m === n}")
println("m和n值是否一样:${m == n}")

数组

常见的几种基本数组类型:

整型:IntArray(Java:int[]),整型装箱:Array(Java:Integer[]) 字符:CharArray(Java:char[]),字符装箱:Array(Java:Character[]) 字符串:Array(Java:String[])

创建数组以及遍历:

val intArr0 = intArrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
//这里it表示是数组的下标 it+1就是对应下标的值 所以是[1,2,3,4,5,6]
val intArr1 = IntArray(6) { it + 1 }
//数组遍历
for (item in intArr0) {
    println(item)
}

区间

//创建了一个[1,10]的离散闭区间
val intRange = 1..10 
println(intRange.joinToString())
//开区间 [1,10) 不包含10
val intRangeRev = 1 until 10 
val strRange = 'a'..'z'

//区间的步长
val intRangeStep = 1..10 step 2 // 标识间隔是2:1、3、5、7、9
//float 或者double类型是连续数值 无法获取多少个
val floatRange = 1f..2f //连续值 无法得到多少个 只能判断是否包含在里面

//区间的包含关系
if (5 in intRange) {
    println("5 in range 'intRange'")
}
if (11 !in intRange) {
    println("11 not in range 'intRange'")
}

//遍历 利用until
val array = intArrayOf(0, 1, 2, 3)
for (i in 0 until array.size) {
    println(array[i])
}

for (i in array.indices) { //是否这个索引
    println(i)
}

集合

Kotlin中的集合基本和Java的一样,它是复用了Java中关于集合的实现类,增加了不可变的集合接口,其中在Kotlin里面,List是不可变的,MutableList可修改,Map<k,v>不可变,MutableMap<k,v>可变,不可变Set,MutableSet可变,创建集合如下:

val intList: List<Int> = listOf(1, 2, 3, 4) //不可变 不能添加或者删除元素
val intList1: MutableList<Int> = mutableListOf(1, 2, 3, 4) //可变
val strList = ArrayList<String>() //类似于Java中的写法List<String> mList = new ArrayList<>();

List集合添加元素

//添加元素
for (i in 0..10) {
    //+=等于添加一个元素 -=是移除一个元素
    strList += "index:$i"
}

Map使用:

//Any等价于Java中的Object "name" to "Max"->理解为k-v
val map: Map<String, Any> = mapOf("name" to "Max", "age" to 28)
val map2: Map<String, Any> = mutableMapOf("name" to "Max", "age" to 28)
val mMap = HashMap<String, Int>()
mMap["kt"] = 10
println("key为kt对应的值为:${mMap["kt"]}")

基本类型介绍大体是这样,完结.