kt学习--基本数据类型
一、基本数据类型
1.1 var 变量声明
//var 后面表示一个变量 后续可以给变量赋值
var i: Int = 0
1.2 val 常量声明
//val修饰过的变量只能在第一次声明时赋值,后续不能再赋值, 否则报错 Val cannot be reassigned
val 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.size
Log.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
- 容器的公共方法
- isEmpty
- isNotEmpty
- clean
- contains 是否包含某个元素
- iterator 迭代器
- 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 -in
mBtn.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} "
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgccfbf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13