前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin极简教程(1)数据类型

Kotlin极简教程(1)数据类型

作者头像
ZackSock
发布2020-02-14 13:50:32
1K0
发布2020-02-14 13:50:32
举报
文章被收录于专栏:ZackSockZackSock

因为种种原因,谷歌把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)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新建文件夹X 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档