Kotlin学习--02

-----笨笨的Kotlin是根据《Kotlin从零到精通 Android开发》一书为基础,做自己的读书笔记和精简书中的类容-----

 

 课程大纲

 

Kotlin学习--02_第1张图片

 

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

===有不对的地方欢迎留言和讨论===

你可能感兴趣的:(积累)