• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

kt学习--基本数据类型

武飞扬头像
ImomoTo
帮助1

一、基本数据类型

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
  • 容器的公共方法
  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 -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
系列文章
更多 icon
同类精品
更多 icon
继续加载