因为种种原因,谷歌把Android的第一开发语言改成了Kotlin。虽然近来用Java编写Android是是非常便利的。但是经过多次更新后,Java在Android方面的用处肯定会比不上Kotlin,所以有必要学习一下Kotlin。

一、基本数据类型(后面有演示代码)

1、基本类型和变量声明:

     基本类型:Int、Long、Float、Double、Boolean、Char、String

     变量声明:var 变量名:变量类型 = 变量值
//声明Int类型变量num,赋值10
var num : Int = 10

ps:kotlin中不需要分号结尾,声明变量时数据可以省略数据类型

注:用val关键词声明的变量类似于Java中用final修饰了,声明时必须初始化

2、简单变量之间的转换

     toInt()、toLong()、toFloat()。。。

二、数组

     1、数组变量的声明

              1.1、基本数组

                       除String外,其它基本类型数组定义为
var num:XArray = xArrayOf()
//例
var num:InteArray = intArrayOf(1, 2, 3)
var word:CharArray = charArrayof('z', 'a', 'c', 'k')
              1.2、String数组
//String数组
var str_array:Array<String> = arrayOf("zack", "rudy");
    2、数组元素的操作

              2.1、获取元素

                       ary[index]或ary.get(index)

              2.2、遍历
//ary为数组,it为其中的元素。可以直接在{}中使用,不需要我们定义
ary.forEach{
  print(it)  
}

三、字符串

     1、字符串与基本类型的转换

              1.1、除转换为Char外,其它都用toX

                       toInt()、toFloat()。。。等

              1.2、转换为Char

                       toCharArray()

     2、字符串的常用方法
var str:String = "Do not go gentle into that good night!"
//获取下标
str.indexOf("!")

//从start截取,到end前一个结束
str.substring(start, end)

//以regx为界限切割成数组
str.split(regx)

四、容器

     1、容器的基本操作

              1.1、三大容器

                       Set、List、Map(每类容器又分为只读和可变两种,前面三个为只读,添加Mutable为可变)

                       MutableSet、MutableList、MutableMap

              1.2、基本操作
//创建一个List容器
var nameList:MutableList = mutableListof("zack", "rudy", "alice")

//判断是否为空
nameList.isEmpty()

//判断是否为非空
nameList.isNotEmpty()

//清除容器
nameList.clear()

//判断是否包含"zack"
nameList.contains("zack")

//返回迭代器
nameList.iterator()

//返回长度
nameList.count()
              1.3、创建容器
//创建只读容器
var list:List<String> = listOf("zack", "rudy", "alice")
var set:Set<String> = setOf("zack", "rudy", "alice")

//创建Map容器的时候,需要使用关键词to,to前面是键,后面是值
var map:Map<String, String> = mapOf("name" to "zack")

//创建可变容器
var list:MutableList<String> = mutableListOf()
var set:MutableSet<String> = mutableSetOf()

//创建MutableMap时,需要使用Pair(Key, Value)
var map:MutableMap<String, String> = 
mutableMapOf(Pair("name", "zack"), Pair("sex", "male"))
    2、集合Set/MutableSet

              2.1、基本特性

                       Set为无序的,不能用下标访问

                       容器内元素为唯一的,如果添加的元素与容器内元素哈希码相同,则会把元素覆盖

                       元素不可修改

              2.2、for-in循环
//set为容器名,item为自定义的名称
for (item in set){
    //在for循环里面调用item就是元素
    println(item)
}
              2.3、迭代器遍历
//获取迭代器
var iterator = set.iterator()

//while循环遍历元素
while(iterator.hasNext()){
    
    //调用next()方法,获取其中的元素
    val item = iterator.next()
}
              2.4、forEach遍历
//set为集合名称
set.forEach{
    //在{}中可以直接用it关键字调用set的元素    
}

注:

//只有MutableSet有add()和remove()方法

//添加元素
set.add("zack")

//删除元素,因为Set是无序的,所以不能通过下标删除元素
set.remove("zack")
     3、队列List/MutableList

              3.1、基本方法
//定义一个队列
var list:MutableList<String> = mutableListOf();

//添加元素,将元素添加到对尾
list.add("zack")

//通过下标获取元素
list.get(0)

//设置指定下标的值,其中index为下标,value为替换后的值
list.set(index, value)

//移除下标为index的值
list.removeAt(index)

注:遍历方式三种容器是通用的

              3.2、sort系列排序
//升序排列,其中it.age为排序条件
sortBy{ it.age }

//降序排列
sortByDescending{ it.age }


//关于it.age
//加入有下列队列,泛型为Person(自定义的类)
var humanList:MutableList<Person> = mutableListOf()

//此时it.age的含义就是:将humanList中的人,按照年龄来升序排
humanList.sortBy{ it.age }
     4、映射Map/MutableMap

              4.1、基本方法
//MutableMap的初始赋值需要通过Pair(Key, Value)来进行
var testMap:MutableMap = mutableMapOf()

//判断是否包含含有指定键名key的元素
testMap.containsKey(key)

//判断是否包含含有指定值value的元素
testMap.containsValue(value)

//添加元素,传入键和值
testMap.put(Key, Value)

//通过键key删除元素
testMap.remove(key)

https://mp.weixin.qq.com/s/kmcFVralqFnIzb8JZhiQFQ