介绍一些常见的语法例如if、for、继承、接口等
条件控制
if表达式
介绍一个if语句,包含一个布尔表达式和一条或者多条语句
实例:
代码语言:javascript复制//传统用法 比较两个数值的大小,并进行赋值
var a = 1;
var b = 3;
var max=b;
if (a > b) {
max = a
}
//使用else
var max1:Int
if(a>b){
max1=a
}else{
max1=b
}
//表达式模式
var max2= if(a>b) a else b
//第三种表达式的 实际写法是这样,但是我们可以省略括号
var max3 = if(a>b){
println("Choose a")
a
}else{
println("choose b")
b
}
//以上三种形式得到的数据是一样的。
使用区间
介绍可以使用in 运算符来检查某个数值是否在指定区间内。区间格式为x..y
实例:
代码语言:javascript复制var a1=5
var a2=9
if (a1 in 1..8){
println("a1 在区间内")
}else{
println("a1 不在区间内")
}
if (a2 in 1..8){
println("a2 在区间内")
}else{
println("a2 不在区间内")
}
输出结果:
代码语言:javascript复制a1 在区间内
a2 不在区间内
When 表达式
介绍: when 将它的参数和所有分支条件顺序比较。直到某个分支满足条件
可以将其理解成java 之中的Switch 操作符
实例1:
代码语言:javascript复制var x:Int=2
// 表达式模式
when(x){
1 -> print("x==1")
2 -> print("x==2")
else ->{//等同于Switch 之中的default
print("x 不是1 也不是2")
}
}
注意 1.如果两个分支处理结果相同,可以通过”,“ 逗号,将比较条件合并
2.其中的else 等同于Switch 之中的default。其他分支都不满足的情况下才会取得else里面的值
实例2:
代码语言:javascript复制
when (x) {
0, 1 -> print("x == 0 or x == 1")
2 -> print("x==2")
else -> {
print("x 不是1 也不是2")
}
}
实例3:
代码语言:javascript复制var y="zinyan"
when(y){
"zin" -> {
println("匹配上了 zin")
}
"yan" -> {
println("匹配上了 yan")
}
"zinyan" -> {
println("匹配上了 zinyan")
}
else->{
println("全部都没有匹配上")
}
}
输出:
代码语言:javascript复制匹配上了 zinyan
检查一个值在(in) 或者不在(!in)一个区间或者集合之中
实例4:
代码语言:javascript复制x=9
when(x){
in 1..10 -> println("x 在[1,10]区间")
in 1..20 -> println("x 在[1,20]区间")
!in 20..25 -> println("x 不在[20,25]区间")
else -> println("x 不在这几个条件范围内")
}
输出结果:
代码语言:javascript复制x=9 x 在[1,10]区间
x10 x 在[1,10]区间
x=11 x 在[1,20]区间
x=-1 x 不在[20,25]区间
x=25 x 不在这几个条件范围内
实例5:
代码语言:javascript复制 var items = setOf("apple","banana","kiwi")
when{
"orange" in items -> println("juicy")
"apple" in items -> println("apple is fine too")
}
输出结果:
代码语言:javascript复制apple is fine too
检查一个值是(is) 或者不是(!is)一个特定类型的值
通常配合Any进行判断
实例:
代码语言:javascript复制var x1:Any =23
when (x1) {
is Int -> print(" x 是Int 数据")
is String -> println("x 是String")
is Boolean -> println("x 是 Boolean")
else -> print("x is funny")
}
实例2:
代码语言:javascript复制 println("结果:${isDataFormat(123)}")
println("结果:${isDataFormat("123")}")
}
fun isDataFormat(x: Any): String = when (x) {
is Int ->" x 是Int 数据"
is String -> "x 是String"
is Boolean -> "x 是 Boolean"
else -> "不知道这个是什么数据"
}
when也可以代替if-else 来进行使用。如果不提供参数
所有的分支条件都是简单的布尔表达式,当其中一个分支条件为真时。执行该分支
实例:
代码语言:javascript复制class Dx() {
fun isDog(): Boolean {
return false
}
fun isCat(): Boolean {
return true
}
}
fun main(args: Array<String>) {
var x:Dx= Dx()
when{
x.isDog()-> println("x 是狗")
x.isCat()-> println("x 是猫")
else -> println("啥也不是")
}
}
循环控制
for 循环
介绍:for循环,主要对任何提供迭代器(iterator)的对象进行遍历。
关键方法:indices 可以获取集合对象的id值
代码语言:javascript复制var items = listOf("apple","banana","kiwi")
for(item in items){
println(item)
}
//下面这两种的遍历方式,会被编译器优化而不会创建额外对象。
for(index in items.indices){
println("item at $index is ${items[index]}")
}
println("直接获取数组的 id 和values")
for((index,value ) in items.withIndex()){
println("item at $index is $value")
}
输出结果:
代码语言:javascript复制apple
banana
kiwi
item at 0 is apple
item at 1 is banana
item at 2 is kiwi
直接获取数组的 id 和values
item at 0 is apple
item at 1 is banana
item at 2 is kiwi
以上为正常循环,如果需要执行倒叙循环 可以加上downTo 函数和step函数
实例:
代码语言:javascript复制for (i in 4 downTo 1) print(i) // 打印结果为: "4321"
for (i in 1..4 step 2) print(i) // 打印结果为: "13"
for (i in 4 downTo 1 step 2) print(i) // 打印结果为: "42"
for (i in 1 until 10) { // i in [1, 10), 不包含 10
println(i)
}
while 和do ... while 循环
介绍:和for循环一样,主要对任何提供迭代器(iterator)的对象进行遍历。
循环的结构为:
代码语言:javascript复制//while 循环
while( 布尔表达式 ) {
//循环内容
}
//do...while 循环
do {
//代码语句
}while(布尔表达式);
和Java之中的while与do...while一样。
do...while循环相对于while循环会至少循环一次。
实例:
代码语言:javascript复制println("while 使用")
var x = 5
while (x < 10 ) {
println(x )
}
println("do... while 使用")
x=5
do {
println(x )
}while (x<5)
输出结果:
代码语言:javascript复制while 使用
5
6
7
8
9
do... while 使用
5
循环中断与跳转
介绍:在java之中我们可以通过break
,continue
,return
来实现跳转。而Kotlin也是一样。
return:结束循环,结束当前的函数.
break:终止当前循环,但是函数继续.
continue: 结束当前循环,执行下一轮循环.
实例:
代码语言:javascript复制for (i in 1..5) {
if (i == 3) continue
println(i)
if (i > 4)
break
}
输出结果:
代码语言:javascript复制1
2
4
5
标签(Label)
介绍:在Kotlin中任何表达式都可以使用标签来标记.标签的格式为标识符 @ 符号组成.标签的标识符是可以自定义.
而通常使用标签会配合Break,Continue或者return来使用.
因为通过标签可以决定方法执行后的跳转对象.
实例1:
代码语言:javascript复制zin@ for (i in 1..10) {
print("i:$i")
for (j in 1..10) {
if (j == 2){
println("--")
continue@zin
}else {
print("j:$j")
}
}
println("继续执行循环")
}
println("继续执行函数")
返回结果
代码语言:javascript复制i:1j:1--
i:2j:1--
i:3j:1--
i:4j:1--
i:5j:1--
i:6j:1--
i:7j:1--
i:8j:1--
i:9j:1--
i:10j:1--
继续执行函数
上面的案例之中,如果将continue
跟换成break
输出结果:
代码语言:javascript复制i:1j:1--
继续执行函数
总结:
通过在中断与跳转函数后面加上标签.可以将程序运行步骤切换到标签标注的表达式执行.