一、循环语句
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,12.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]) /03.查找数组索引/角标
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
随时随地看视频