一、循环语句
for循环
//循环遍历字符串,不包含选定字符
fun main(args: Array<String>) { val ar = "abcde"for(c in ar) { if(c.equals('c')) continue print(c ) } }
for循环带索引
fun main(args: Array<String>) { val ar = "abcde" for ((index, c) in ar.withIndex()) { println("index=$index,c=$c") }
forEach循环
fun main(args: Array<String>) { val ar = "abcde" ar.forEach { println(it) } }
forEach循环带索引
fun main(args: Array<String>) { val ar = "abcde" ar.forEachIndexed { index, c -> print("index=$index c=$index .") }
注意:
1.for循环可以使用continue和break关键字,forEach循环不可以
2.用来表示变量的值,index表示index变量的值
标签处返回@
fun main(args: Array<String>) { val str1 = "123" val str2 = "abc" h@ for (c2 in str1) { for (c1 in str2) { print("$c1$c2 ") if (c1 == 'b' && c2 == '2') break@h } } } //此处用于以break结束外层for循环
while循环
fun main(args: Array<String>) { var i = 1 var count = 0 while(i<=100) { count += i i++ } println(i ) println(count) }//此处注意变量使用.变量修饰符为可变变量var
二、区间
fun main(args: Array<String>) { val arr = IntRange(0, 100) val arr1 = 1.rangeTo(100) val arr2 = 1..100 //区间的三种定义方式(均包含头尾) val arr3 = 'a'.rangeTo('s') val arr4 = CharRange('b','y') val arr5 = 'A'..'z' val arr6 = LongRange(1,100) val arr7 = 2L.rangeTo(100) val arr8 = 1L..100}
//1.区间有IntRange,CharRange,LongRange三种
//2.LongRange书写时后两种方式前面的L不能省略,生成固定代码后可以省略.小写的l会报错
区间遍历
1.加上步长遍历
fun main(args: Array<String>) { val arr = IntRange(0, 100) val arr1 = 1..100 for (i in arr.step(2)) { //arr.step(2)输出偶数,arr1.step(2)输出奇数 print(" "+i) } }
2.for循环加上index
for ( (index,c) in arr1.withIndex()) { println("$index,$c") } //输出结果为 0,1
2.1
for (c in arr.withIndex()) { println(c) } //默认写法输出值IndexedValue(index=0, value=0)
3.forEach遍历
arr.forEach { println(" "+it) } //it为固定名称变量,不可修改 4.forEach带索引遍历
arr5.forEachIndexed { index, c -> println("$index,$c") }
反向区间 downTo
val ar = 25 downTo 1println(ar) //结果为 25 downTo 1 step 1
区间的反转 reversed
val al = ar.reversed()
数组
1.定义
1.1 已知元素
val arr = arrayOf("张三","李四","王五") val arr5 = arrayOf("李", 4, '3') //Any型数组 val arr3 = intArrayOf(3,4,4) //定义整型数组 注: arrayOf不带类型,数组可以是任意类型
1.2 只知道元素个数
val arr2 = IntArray(3) //定义一个长度(元素个数)为3的字符数组,初始值为1 val arr1 = Array<String>(3){"1"} val arry = Array<Char>(4) { 'a' } 注:String字符串数组创建含Any型只有2种
2.访问与修改
val arr5 = arrayOf("李", 4, '3') println(arr5[2]) /输出为 3 val arr2 = IntArray(3) arr2.set(1,2) println(arr2[1]) /2 println(arr2[0]) /0
3.查找数组索引/角标
val arr5 = arrayOf("李一","李四","李三","李四","王") println(arr5.lastIndexOf("李四")) println(arr5.indexOfLast { it == "李四" })//前两个结果都为3 println(arr5.indexOfFirst { it == "李四"}) //1 println(arr5.indexOf("王")) //默认输出第一个索引 val index3 = arr5.indexOfFirst { it.startsWith("李") } println(index3) //0 println(arr5.indexOfLast { it.startsWith("李") }) //3
注:
startsWith只可用于String数组
when表达式
fun Grade(score: Int): String { when(score){ 100 ->return "满分" in 90..99 -> return "优秀" in 80.rangeTo(89) ->return "良好" in 70.rangeTo(79) ->return "及格" in IntRange(60,69) -> return "较好" else->return "不及格" } }
简写格式
fun Grade(score: Int): String = when(score){ 100 -> "满分" in 90..99 -> "优秀" in 80.rangeTo(89) -> "良好" in 70.rangeTo(79) -> "及格" in IntRange(60,69) -> "较好" else-> "不及格" }
函数表达式
fun main(args: Array<String>) { println(Grade(83)) //上面的调用 fun max(a:Int,b:Int) = if(a>b) a else b println(max(-3, 5)) }
另一种写法
fun max(a:Int,b:Int):Int{ return if(a>b) a else b }
函数变量
invoke可以非空判断
val minus:(Int,Int)->Int= {a,b->a-b} println(minus(3, 5)) println(minus.invoke(9, 3))
函数引用::
val app=::Grade
默认参数/具名参数
fun SendRequest(method:String="GET",path:String){ println("$method,$path") } fun main(args: Array<String>) { SendRequest("POST","www.baidu.com") //POST,www.baidu.comSendRequest(path ="www.google.com") //GET,www.google.com SendRequest("GET","www.cn.com") //GET,www.cn.com}
作者:证始
链接:https://www.jianshu.com/p/117b7a375fb8
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦