因为种种原因,谷歌把Android的第一开发语言改成了Kotlin。虽然近来用Java编写Android是是非常便利的。但是经过多次更新后,Java在Android方面的用处肯定会比不上Kotlin,所以有必要学习一下Kotlin。
一、基本数据类型(后面有演示代码)
1、基本类型和变量声明:
基本类型:Int、Long、Float、Double、Boolean、Char、String
变量声明:var 变量名:变量类型 = 变量值
代码语言:javascript复制//声明Int类型变量num,赋值10
var num : Int = 10
ps:kotlin中不需要分号结尾,声明变量时数据可以省略数据类型
注:用val关键词声明的变量类似于Java中用final修饰了,声明时必须初始化
2、简单变量之间的转换
toInt()、toLong()、toFloat()。。。
二、数组
1、数组变量的声明
1.1、基本数组
除String外,其它基本类型数组定义为
代码语言:javascript复制var num:XArray = xArrayOf()
//例
var num:InteArray = intArrayOf(1, 2, 3)
var word:CharArray = charArrayof('z', 'a', 'c', 'k')
1.2、String数组
代码语言:javascript复制//String数组
var str_array:Array<String> = arrayOf("zack", "rudy");
2、数组元素的操作
2.1、获取元素
ary[index]或ary.get(index)
2.2、遍历
代码语言:javascript复制//ary为数组,it为其中的元素。可以直接在{}中使用,不需要我们定义
ary.forEach{
print(it)
}
三、字符串
1、字符串与基本类型的转换
1.1、除转换为Char外,其它都用toX
toInt()、toFloat()。。。等
1.2、转换为Char
toCharArray()
2、字符串的常用方法
代码语言:javascript复制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、基本操作
代码语言:javascript复制//创建一个List容器
var nameList:MutableList = mutableListof("zack", "rudy", "alice")
//判断是否为空
nameList.isEmpty()
//判断是否为非空
nameList.isNotEmpty()
//清除容器
nameList.clear()
//判断是否包含"zack"
nameList.contains("zack")
//返回迭代器
nameList.iterator()
//返回长度
nameList.count()
1.3、创建容器
代码语言:javascript复制//创建只读容器
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循环
代码语言:javascript复制//set为容器名,item为自定义的名称
for (item in set){
//在for循环里面调用item就是元素
println(item)
}
2.3、迭代器遍历
代码语言:javascript复制//获取迭代器
var iterator = set.iterator()
//while循环遍历元素
while(iterator.hasNext()){
//调用next()方法,获取其中的元素
val item = iterator.next()
}
2.4、forEach遍历
代码语言:javascript复制//set为集合名称
set.forEach{
//在{}中可以直接用it关键字调用set的元素
}
注:
代码语言:javascript复制//只有MutableSet有add()和remove()方法
//添加元素
set.add("zack")
//删除元素,因为Set是无序的,所以不能通过下标删除元素
set.remove("zack")
3、队列List/MutableList
3.1、基本方法
代码语言:javascript复制//定义一个队列
var list:MutableList<String> = mutableListOf();
//添加元素,将元素添加到对尾
list.add("zack")
//通过下标获取元素
list.get(0)
//设置指定下标的值,其中index为下标,value为替换后的值
list.set(index, value)
//移除下标为index的值
list.removeAt(index)
注:遍历方式三种容器是通用的
3.2、sort系列排序
代码语言:javascript复制//升序排列,其中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、基本方法
代码语言:javascript复制//MutableMap的初始赋值需要通过Pair(Key, Value)来进行
var testMap:MutableMap = mutableMapOf()
//判断是否包含含有指定键名key的元素
testMap.containsKey(key)
//判断是否包含含有指定值value的元素
testMap.containsValue(value)
//添加元素,传入键和值
testMap.put(Key, Value)
//通过键key删除元素
testMap.remove(key)