-----笨笨的Kotlin是根据《Kotlin从零到精通 Android开发》一书为基础,做自己的读书笔记和精简书中的类容-----
课程大纲
1.数据类型
1.1基本数据类型
1.1.1类型声明
名称 | Kotlin数据类型 |
java数据类型 |
整型 |
Int |
int和Integer |
长整型 |
Long |
long和Long |
浮点型 |
Float |
float和Float |
双精度 |
Double |
double和Double |
布尔型 |
Boolean |
boolean和Boolean |
字符型 |
Char |
char |
字符串 |
String |
String |
Kotlin的声明写法
var i : Int = 0;
区别于java的
int i = 0;
注意点:
可变量的声明
var
final类型的声明
val
1.1.2类型转换
z
Kotlin的数据类型转换函数 |
说明 |
toInt | 转成整型 |
toLong |
转成长整型 |
toFloat |
转成浮点型 |
toDouble |
转成双精度数 |
toChar |
转成字符 |
toString |
转成字符串 |
用法示例,实际的操作自己回去试验一下。
val origin : Folat = 65.0f;
var str : String = origin.toString();
1.2数组
1.2.1数组声明
基本数组类型 |
数组类型名称 |
数组类型初始化函数 |
整形数组 |
IntArray |
intArrayOf |
长整型数组 |
LongArray |
longArrayOf |
浮点数组 |
FloatArray |
floatArrayOf |
双精度数组 |
DoubleArray |
doubleArrayOf |
布尔型数组 |
BooleanArray |
booleanArrayOf |
字符串数组 |
CharArray |
charArrayOf |
示例:
var int_array : IntArray = intArrayOf(1,2,3,4);
特殊的字符串数组:
var string_array : Array = arrayOf("how","do","you","do");
1.2.2数组元素操作
获取数组长度和指定位置元素,看示范
fun getArrayStringData(){
var string_array : Array = arrayOf("How","do","you","do");
var str : String? = "";
var index : Int = 0;
while(index < string_array.size){
str += string_array[index]+",";
index ++;
}
}
1.3字符串
1.3.1字符串的转换
字符串转换目标 |
Kotlin的转换方式 |
java的转换方式 |
字符串转整型 |
toInt | Integer.parseInt |
字符串转长整型 |
toLong |
Longe.parseLong |
字符串转浮点型 |
toFloat |
Float.parseFloat |
字符串转双精度数 |
toDouble |
Double.parseDouble |
字符串转布尔型 |
toBoolean |
Boolean.parseBooealn |
字符串转字符数组 |
toCharArray |
toCharArray |
1.3.2字符串的常规操作
常规操作 |
方法 |
查找字符串 |
indexOf |
替换子串 |
replace |
截取指定位置子串 |
substring |
根据条件分割子串 |
split |
举例
fun getStringFun(){
var str : String = "Who am I? You are Kotlin Man."
//index and substring
if(str.indexOf("?") > 0){
str = str.substring(0,str.indexOf("?"))
}
//注意,split返回的是List
var strList : List = str.split("?")
var strResult : String = "";
for(item in strList){
strResult += item +","
}
//字符串的获取还可以直接通过下标获取
var strIndex5 : String = str[5].toString();
var strIndex6 : String = str.get(6).toString();
}
在这里补充一个关于字符串拼接的操作,这个比java简单多了
拼接活使用的字符是$
格式大概如下
${}
因为美元作为特殊符号了,所以在字符串中要打印出来的话,就要这么做
${ '$' }
也可以直接\$
举个例子。
text.text = "You can do it!!add...${str}"
1.4容器
1.4.1 常规操作
Kotlin容器 |
容器名称 |
容器的初始化方法 |
备注 |
只读集合 |
Set |
setOf | 集合 |
可变集合 |
MutableSet |
mutableSetOf |
|
只读集合 |
List |
listOf |
队列 |
可变集合 |
MutableList |
mutableListOf |
|
只读集合 |
Map |
mapOf |
映射 |
可变集合 |
MutableMap |
mutableMapOf |
上面的容器拥有的共同方法
函数 |
作用 |
isEmpty | 容器是否为空 |
isNotEmpty |
容器不为空 |
clear |
清空容器 |
contains |
容器是否包含指定元素 |
iterator |
获取容器迭代器 |
count |
获取容器元素个数,size也可以获取 |
fun getListData(){
var strList : List = listOf("I","you","she");
}
1.4.2 集合,队列,映射
集合的特点(Set/MutableSet)
1.内部无序
2.内部元素存在唯一性
所以导致在操作的时候,Set初始化后是不可以更改的,可以更改的MutableSet具有几个限制。
1.可以使用add方式添加元素,但是不知道元素的位置。
2.remove删除指定的元素,而无法根据角标位来删除元素
3.没有修改元素的方法
遍历的方式由三种,for-in,forEach和迭代器。
val myMutableSet : MutableSet = mutableSetOf("mxy","gss","wc","lzp");
fun showSet_Forin(){
var desc = "";
for(item in myMutableSet){
desc = "${desc}名称:${item}";
}
}
fun showSet_Iterator(){
var desc = "";
var iterator = myMutableSet.iterator();
while(iterator.hasNext()){
val item = iterator.next();
desc = "${desc}名称:${item}";
}
}
fun showSet_ForEach(){
var desc = "";
//it 是内部使用的子对象
myMutableSet.forEach{desc = "${desc}名称:${it}"}
}
队列的特点(List/MutableList)
其实也就比集合多了一个有序排列的次序管理。所以只要有增删查改的操作,基本都是要使用队列来处理。
get,set,add,removeAt都有了意义。照样的,迭代的方式也有for-in,iterator,forEach,不过还多了一种按元素下角标循环,毕竟是有序的了。
fun showList_indexFor() : String{
var desc = "";
for( i in myMutableList.indices){
val item = myMutableList[i];
desc = "${desc}名称:${item}"
}
return desc;
}
List当然还有我们常用的排序功能,内部嵌入的是sort方法
myMutableList.sortBy { it.length } 升序
myMutableList.sortByDescending { it.length } 降序
映射的特点(Map/MutableMap)
三种容器只要涉及到增删查改的都需要使用mutable.
Map的操作标注几个关键点。
1.containsKey和constainValue的注意
2.MutableMap的put方法会进行key的对比
3.remove是通过key来删除
4.mapOf和mutableMapOf初始化的方式由两种,一种是“key to value”,一种是“Pair(key,value)”
遍历的方式一样是三种,for-in,forEach,迭代器
fun showMap_forIn(){
var desc = "";
for(item in myMutableMap){
desc = "${desc}${item.key}的名字是:${item.value}"
}
}
fun showMap_ForEach(){
var desc = "";
//foreach 内部使用key 和value
myMutableMap.forEach{key,value ->
desc = "${desc}${key}的名字是:${value}"
}
}
fun showMap_iterator(){
var desc = "";
var iterator = myMutableMap.iterator();
while(iterator.hasNext()){
val item = iterator.next();
desc = "${desc}${item.key}的名字是:${item.value}"
}
}
-----用例代码分享在Github.有兴趣的小伙伴可以去直接看.-----
https://github.com/BXHero/KotlinStudy
===有不对的地方欢迎留言和讨论===