ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 基本数据类型 ![](https://img.kancloud.cn/04/85/048527ceb9b4e788dd86b08d89a2b1cd_2342x1052.png) 能用val就用val ~~~ //可变 var a: Int = 10 //不可变 val b = a + 10 val hashCode = b.hashCode() println(hashCode) ~~~ # 类型转换 ~~~ i = s.toInt() ~~~ # 字符串 * 字符串定义 - 普通字符串:”hello” - 原样输出字符串: """hello""" * 字符串删除空格`trim()`和`trimMargin()` * 字符串比较`equals` `==` 和 `=== ` * 字符串切割split和多条件 ~~~ val trim = " aaa ".trimIndent() println("---" + trim + "---") //---aaa --- ~~~ ~~~ val trim = """ /a /b /c """.trimMargin("/") /** a b c */ println(trim) ~~~ # 元组 给多个变量同时赋值 * 二元元组Pair * 三元元组Triple ~~~ val (s, i) = Pair<String, Int>("张三", 20) println(s) println(i) val pair = Pair<String, Int>("张三", 21) println(pair.first) println(pair.second) val pair1 = "张三" to 22 println(pair1.first) println(pair1.second) ~~~ # 空值处理 * `?可空变量类型` ~~~ val a:Int? = null ~~~ * `!!非空断言,不要检查我一定不为空` 如果是空会报空指针异常 ~~~ var age:String = null!! ~~~ * ?.空安全调用符 ~~~ age?.toInt() ~~~ * `?:Elvis操作符` 如果是空的话就是10 ~~~ var ageInt:Int = age?.toInt()?:10 ~~~ # 字符串模板 ~~~ fun main(args: Array<String>) { println(createDiary("abc")) } fun createDiary(place: String):String { return "---1--${sayHello()}---${place}---${place.length}" } fun sayHello(): String { return "hello" } ~~~ # for循环 * 普通的for循环 ~~~ for (c in s ) { println("c=$c") } ~~~ * 加上index角标的for循环 ~~~ for ((index, c) in s.withIndex()) { println("index=$index c=$c") } ~~~ # foreach 普通foreach ~~~ s.forEach { println("it=$it") } ~~~ 加上index角标的foreach ~~~ s.forEachIndexed { index, c -> println("$c 的角标是$index") } ~~~ # 数组 ~~~ val arr = arrayOf("张三","李四","王五") //10 20 30 val arr1 = arrayOf(10,20,30) //a b c val arr2 = arrayOf('a','b','c') //"张三" 10 'a' val arr3 = arrayOf("张三",10,'a') ~~~ ~~~ val arr4 = IntArray(10)//new int[10] val arr5 = IntArray(10){//把数组里面每一个元素都初始化为30 30 } // BooleanArray // ByteArray // ShortArray // CharArray // FloatArray // DoubleArray // LongArray // StringArray//不能用 ~~~ **元素修改** ~~~ val array = arrayOf(1,2,3,4,5) //把3修改成9 array[2] = 6 array.set(2,9) ~~~ **下标查找** ~~~ val array = arrayOf("张三","李四","张四","王五","张三","赵六") //查找第一个”张三”角标 //返回第一对应的元素角标 如果没有找到返回-1 val index1 = array.indexOf("张三") println(index1) //查找最后一个”张三”角标 //找不到 返回-1 val index2 = array.lastIndexOf("张三") println(index2) /*---------------------------- 高阶函数实现 ----------------------------*/ //查找第一个姓”张”的人的角标 // val index3 = array.indexOfFirst { // it.startsWith("张") // } // println(index3) //查找最后一个姓”张”的人的角标 val index4 = array.indexOfLast { it.startsWith("张") } println(index4) val index5 = array.indexOfFirst { it=="张三" } println(index5) ~~~