文章目录

  • 一、基本数据类型
    • 1.1 var 变量声明
    • 1.2 val 常量声明
  • 二、数组的使用
    • 2.1 数组的声明
    • 2.2 数组的使用
  • 三、字符串
    • 3.1 字符串与基本类型的转换
    • 3.2 字符串的基本使用
    • 3.3 字符串的模板和拼接
  • 四、容器
    • 4.1 容器说明
    • 4.2 集合Set/MutableSet
      • 4.2.1 Set/MutableSet说明
      • 4.2.2 for-in遍历
      • 4.2.2 迭代器遍历
      • 4.2.2 forEach遍历
    • 4.3 队列List/MutableList
      • 4.3.1 List/MutableList说明
      • 4.3.2 for-in遍历
      • 4.3.3 迭代器遍历
      • 4.3.3 forEach遍历
    • 4.4 映射Map/MutableMap
      • 4.4.1 Map/MutableMap说明
      • 4.4.2 for-in遍历
      • 4.4.3 迭代器遍历
      • 4.4.4 forEach遍历

一、基本数据类型

1.1 var 变量声明

 //var 后面表示一个变量  后续可以给变量赋值var i: Int = 0

1.2 val 常量声明

    //val修饰过的变量只能在第一次声明时赋值,后续不能再赋值, 否则报错  Val cannot be reassignedval orign: Float = 65.0f

二、数组的使用

2.1 数组的声明

基本数组类型 数组类型名称 数组类型的初始化
整形数组 IntArray intArrayOf
长整型数组 LongArray longArrayOf
浮点数组 FloatArray floatArrayOf
双精度数组 Doublerray doubleArrayOf
布尔类型数组 BooleanArray booleanArrayOf
字符数组 CharArray charArrayOf
var int_arr: IntArray = intArrayOf(1, 2, 3)
var long_arr: LongArray = longArrayOf(11, 22, 33)
var float_arr: FloatArray = floatArrayOf(1f, 2f, 5f)// String数组的声明需要使用Array<String>
//数组变量都可以通过Array<类型>进行声明
var string_arr:Array<String> = arrayOf("how","can","i")

2.2 数组的使用

var str_arr:Array<String> = arrayOf("how","can","i","study","kotlin")
//获取数组长度val arrLength:Int =  str_arr.sizeLog.e(TAG,"获取数组长度:"+ arrLength)//获取数组指定位置元素var indexValue:String = str_arr[4]Log.e(TAG,"获取指定下标的值:"+ indexValue)var getIndexValue:String = str_arr.get(4)Log.e(TAG,"通过get方式获取下标的值:"+getIndexValue)

三、字符串

3.1 字符串与基本类型的转换

// 字符串与基本数据类型之间的转换
// toInt(),toFloat(),toLong(),toDouble(),toChar()
val testStr: String = "66"
val changeInt: Int = testStr.toInt();
Log.e(TAG, "转换后整型后输出:" + changeInt)

3.2 字符串的基本使用

//字符串的常用方法
val strData:String = "How can i study kt";//通过get()方法获取指定位置上的字符串
var findStr:Char  = strData.get(2)
Log.e(TAG,"查找子串:"+ findStr)//替换子串
var replaceStr:String = strData.replace("i","you")
Log.e(TAG,"替换后的字符串:"+ replaceStr)//截取指定位置
var cutStr:String = strData.substring(0,strData.indexOf("i"))
Log.e(TAG,"截取后的字符串:"+ cutStr)//按照特定字符分割子串
//splite 返回的是String集合
var strList:List<String> = strData.split(" ")for (str in strList){Log.e(TAG,"分割的字符串:"+ str)}// 根据下标获取某一个字符串
var getCharByIndex:String = strData[2].toString()
Log.e(TAG,"根据下标获取字符串:"+ getCharByIndex)

3.3 字符串的模板和拼接

//$变量名  表示可在此处引用该变量的值
mBtn.setOnClickListener{mBtn.text = "字符串拼接为$strData"
}
//如果变量需要进行运算,需要用大括号把运算表达式括起来
mBtn.setOnClickListener{mBtn.text = "字符串拼接${strData.length}"
}
//对美元符号做转译
mBtn.setOnClickListener {mBtn.text = "折合美元${'$'}${strData.length}"
}

四、容器

 // Kt支持在声明时进行初始化赋值val statelites: List<String> = listOf("金星", "木星", "水星", "火星", "土星");

4.1 容器说明

  • 容器分类 Set 队列List 映射Map
  • 容器的公共方法
  1. isEmpty
  2. isNotEmpty
  3. clean
  4. contains 是否包含某个元素
  5. iterator 迭代器
  6. count 容器包含元素的数量

4.2 集合Set/MutableSet

4.2.1 Set/MutableSet说明

  • 1、元素不按顺序排列,无法按照下标进行访问
  • 2、元素存在唯一性,通过哈希值校验是否存在相同的元素,如果存在,则覆盖
  • 3、因为Set是只读集合,初始化后就不可修改,所以元素变更的方法只适合MutableSet
  • 4、MutableSet操作的限制
    • <1>、MutableSet的add方法仅仅往集合中添加元素,集合是无序的,因此不知道元素的下标
    • <2>、MutableSet没有修改元素值的方法,一个元素如果被添加,就不能修改
    • <3>、MutableSet的remove方法用于删除指定元素,但无法删除某个位置的元素

4.2.2 for-in遍历

 var phoneBrand: Set<String> = setOf("Iphone", "VIVO", "OPPO", "HUAWEI", "XIOAMI", "SumSung")// for-in循环mBtn.setOnClickListener {var desc: String = ""for (item in phoneBrand) {desc = "${desc}名称:${item} \n"}mDescTv.text = "手机品牌包含${phoneBrand.size}款: \n $desc"}

4.2.2 迭代器遍历

mBtn.setOnClickListener {var desc: String = ""var iterator = phoneBrand.iterator()while (iterator.hasNext()) {var getBrand = iterator.next()desc = "${desc}名  称:${getBrand}\n"}mDescTv.text = "手机品牌包含${phoneBrand.size}款: \n $desc"}

4.2.2 forEach遍历

mBtn.setOnClickListener {var desc: String = ""phoneBrand.forEach {desc = "${desc}名称:+${it} \n"}mDescTv.text = "手机品牌包含${phoneBrand.size}款: \n $desc"}

4.3 队列List/MutableList

4.3.1 List/MutableList说明

  • 1、队列是一种元素按照顺序排列的容器
  • 2、能够通过get方法获取指定位置的元素,也可以直接通过下标获取
  • 3、MutableList的add方法都是把元素添加到队列的队尾,也可以指定添加的位置
  • 4、MutableList的set方法允许替换或者修改指定位置的元素
  • 5、MutableList的remove方法允许删除指定位置的元素
  • 6、MutableList的遍历除了for-in,迭代遍历, forEach遍历,还多了一种下标循环遍历

4.3.2 for-in遍历

 val phoneBrandist: MutableList<String> =mutableListOf("IPHONE", "VIVO", "OPPO", "XIAOMI", "HUAWEI", "SUMSUNG");//for -inmBtn.setOnClickListener {var desc: String = "";for (i in phoneBrandist.indices) {val brandName: String = phoneBrandist.get(i);desc = "${desc}品牌:${brandName} \n"}mDescTv.text = "当前热销的品牌有一下${phoneBrandist.size}款 \n  ${desc}"}

4.3.3 迭代器遍历

  • MutableList提供了sort方法用于给队列中的元素重新排序
  • sortBy表示按照指定条件升序
  • sortDescending 表示按照指定条件降序
mAscBtn.setOnClickListener {phoneBrandist.sortBy { it.length }var desc: String = ""val iterator = phoneBrandist.iterator()while (iterator.hasNext()) {val brandName: String = iterator.next();desc = "${desc} 品牌${brandName} \n"}mDescTv.text = "当前热销的品牌有一下${phoneBrandist.size}款 \n" +"  ${desc}"}

4.3.3 forEach遍历

 mDscTv.setOnClickListener {phoneBrandist.sortByDescending { it.length }var desc: String = ""phoneBrandist.forEach {desc = "${desc} pinpai:${it} \n"}mDescTv.text = "当前热销的品牌有一下${phoneBrandist.size}款 \n" +"  ${desc}"}

4.4 映射Map/MutableMap

4.4.1 Map/MutableMap说明

  • 1、相同键名指向的键值是唯一的
  • 2、containsKey 方法判断是否存在指定键名的元素,containsValue方法判断是否存在指定键值的元素
  • 3、使用put方法,Map会根据键名寻找相同元素,找不到就添加,找到就替换
  • 4、MutableMap的remove方法是根据键名来删除元素的
  • 5、调用mapOf和mutableMapOf方法初始化映射时,有两种方式表达键值对元素
    键名 to 键值, Pair(键名,键值)

4.4.2 for-in遍历

 var goodsMap: Map<String, String> = mapOf("iphone" to " iphone11","huawei" to "Meta 10","xiaomi" to "小米11","vivo" to " IQOO","oppo" to "R11","sumsung" to "Galxy")var goodsMulMap: MutableMap<String, String> = mutableMapOf(Pair("iphone", "iphone11"),Pair("huawei","Meta 10"),Pair("xiaomi","小米11"),Pair("vivo","IQOO"),Pair("oppo","R11"),Pair("sumsung","Galxy"))// for-in循环mBtn.setOnClickListener {var desc:String = ""for (item in goodsMap){desc = "${desc}厂家:${item.key},名称:${item.value} \n"}mDescTv.text = "${goodsMulMap.size}款手机品牌对映${desc} \n"}

4.4.3 迭代器遍历

 mBtn.setOnClickListener {var desc:String = ""var iterator = goodsMulMap.iterator()while (iterator.hasNext()){val item = iterator.next()desc = "${desc} 厂家:${item.key},型号:${item.value} \n"}mDescTv.text = "${goodsMulMap.size} 款手机品牌对映:${desc} \n"}

4.4.4 forEach遍历

  mBtn.setOnClickListener {var desc:String = ""
//            goodsMulMap.forEach{//                desc = "${desc} 厂家:${it.key}, 型 号:${it.value} \n"
//            }goodsMulMap.forEach{key,value -> desc = "${desc}  厂家: ${key}, 对映型号:${value} \n"}mDescTv.text = "${goodsMulMap.size}款手机对映关系: \n ${desc} "}

kt学习--基本数据类型相关推荐

  1. Redis学习笔记 - 数据类型与API(1)Key

    Redis学习笔记 - 数据类型与API(1)Key Key相关命令 1. 常用命令 命令 含义 时间复杂度 keys 查找所有符合给定模式 pattern 的 key O(N), N 为数据库中 k ...

  2. 小猿圈python金角大王_小猿圈python学习-基本数据类型

    小猿圈python学习-基本数据类型 2019-04-24 11:16:14 1点赞 6收藏 0评论 什么是数据类型? 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大, ...

  3. ArcGIS基础学习:数据类型

    ArcGIS基础学习:数据类型 前言 最近喜欢上了学习地理统计的相关内容,准备开始学习,会不定时修改. 第一章 数据类型 一.arcgis数据类型: 1.数字型:整数型.单精度浮点型.双精度浮点型 2 ...

  4. c语言初学知识点,C语言学习关于数据类型的一些知识点(初学者)

    1.整型常量的的前缀:(1)十进制常数无前缀. (2)八进制常数前缀为0,八进制常数无符号. (3)十六进制常数前缀为0X或0x. 注:在程序中是根据前缀来区分各种进制数的.因此在书写常数时不要把前缀 ...

  5. C 语言 和 C++语言的对比学习   二 数据类型

    不管是什么语言,我们最习惯的是通过 "hello world" ,来昭告世界,我们有了新的语言来向这个世界问好,尽管真正属于我们自己的其实是哭声.(呵呵,笑点有点低),下面我们来介 ...

  6. Python3学习笔记-数据类型和变量

    有C++基础,一直对"万能"的Python语言感兴趣,目前正在学习廖雪峰老师的Python3教程和其他资料用来入门,这里记录一些没接触过或与C++有差异的知识,方便自己查阅吧~ 字 ...

  7. Redis学习(4)-数据类型set和zset

    Set数据类型及操作 Set集合是通过hash table实现的,所以添加.删除和查找的复杂度都是O(1),hash table会随着添加或者删除自动的调整大小,需要注意的是 hash table大小 ...

  8. python 声明变量类型_python基础学习03数据类型和变量

    数据类型和变量 1. 数据类型 1.1 整数 Python中不限制整数正负及大小,例如:1,-1,100,-100等等.计算机常用十进制和十六进制表示数值,比如十六进制表示方法是用前缀0x加后缀0-9 ...

  9. c语言基本数据类型常量,C语言基础学习基本数据类型-变量和常量

    变量和常量 什么是变量和常量?有些数据在程序运行前就预先设定,并在运行过程中不发生变化,称之为常量:有些数据在程序运行中可能发生变化或被赋值,称之为变量. 使用变量前必须先声明一个变量.变量定义的语法 ...

最新文章

  1. 【组队学习】【35期】数据可视化(Matplotlib)
  2. Ubuntu Linux 安装 .7z 解压和压缩文件
  3. 【Spark 深入学习 04】再说Spark底层运行机制
  4. arcgis缓冲后在envi中聚类出错
  5. random_shuffle 和transform算法
  6. 为什么我的IP地址经常变化
  7. 2013-开始新的一年
  8. 内置模块(time、random、hashlib、os)
  9. python redis模块常用_python redis 模块
  10. 金九银十,23届秋招信息超全汇总表!各大名企优质岗位持续更新中···
  11. 地理信息系统导论第八版_地理信息系统导论.pdf
  12. matlab计算下列极限,MATLAB微积分计算极限,又快又好
  13. 别踩白块_前端H5游戏毕设
  14. 移动端模拟导航可点击自动滑动
  15. 用cefsharp来steam账号注册
  16. Linux权限(重点)
  17. [人生]工作两年后感悟的《大话西游》
  18. 复杂的生活简单过,简单的事情重复做
  19. python中英文对照
  20. 云数据库行业动态【2023年2月版】

热门文章

  1. 五、JMeter压力测试
  2. android路由框架 简书,【推荐】好用强大的Android路由框架--Rudolph
  3. XHR请求与fetch请求
  4. 基于单片机的电梯(四层)控制系统设计
  5. linux按时间创建文件夹,Linux命令创建日期文件夹或者文件
  6. 单源最短路径问题(dijkstra算法)
  7. 电磁学笔记 --- 偏振公式推导
  8. 【SpringSSM项目】搏击俱乐部 文章收藏
  9. 楼梯式导航 html,jQflowNavigation
  10. 运营商 html劫持 原理,域名劫持、运营商流量劫持的现象及分析