Code Kotlin学习笔记0x02

Kotlin学习笔记0x02

变量类型推断

  • 例子1
    1
    2
    3
    4
    5
    6
    7
    fun main(args:Array<String>){
    val str = "A"
    println(str)
    println(str is String)
    println(str::class)
    println(str::class.java)
    }
    1
    2
    3
    4
    A
    true
    class kotlin.String
    class java.lang.String

  • 例子2
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import java.util.Date

    fun main(args:Array<String>){
    val d = Date()
    println(d)
    println(d is Date)
    println(d::class)
    println(d::class.java)
    }
    1
    2
    3
    4
    Fri Oct 27 09:34:03 UTC 2017
    true
    class java.util.Date
    class java.util.Date

  • 例子2
    1
    2
    3
    4
    5
    6
    fun main(args:Array<String>){
    val bool = true;
    println(bool)
    println(bool::class)
    println(bool::class.java)
    }
    1
    2
    3
    true
    class kotlin.Boolean
    boolean

  • 例子3
    1
    2
    3
    4
    5
    6
    7
    fun main(args:Array<String>){
    val array = arrayOf(1,2,3)
    println(array)
    println(array is Array)
    println(array::class)
    println(array::class.java)
    }
    1
    2
    3
    4
    [Ljava.lang.Integer;@5305068a
    true
    class kotlin.Array
    class [Ljava.lang.Integer;

流程控制语句

  • 分支语句 if,when

  • 循环语句 for,while

  • 跳转语句 return,break,continue,throw

if 语句

if作为代码块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
fun main(args: Array<String>) {
max(1,9)
}

fun max(a:Int, b: Int):Int{
val max = if(a>b){
print("Max is a")
a//最后一行是该if代码块的返回值
}else{
print("Max is b")
b//最后一行是该if代码块的返回值
}
return max
}
1
Max is b

  • if表达式必须有一个else分支
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fun main(args: Array<String>) {
    //val x = if(1==1) true
    //println(x)
    /*
    'if' must have both main and 'else' branches if used as an expression
    */
    val y = if(1==1) true else false
    println(y)
    }
    1
    true

when表达式

1
2
3
4
5
6
7
8
9
10
fun main(args: Array<String>) {
val x=1
val validNumbers = arrayOf(1,2,3)
when(x){
in 1..10 -> print("x is in the range")
in validNumbers ->print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
}
}
1
x is in the range

由此可见 when语句只会执行第一个匹配的条目


for循环

1
2
3
4
5
6
7
8
9
fun main(args: Array<String>) {
for(arg in args){
println("No.1:$arg")
}
for(i in args.indices){
println("No.2:${args[i]}")
}
println("args.indices:"+args.indices)
}
1
2
3
4
5
6
7
8
9
No.1:A
No.1:B
No.1:C
No.1:A
No.2:A
No.2:B
No.2:C
No.2:A
args.indices:0..3

return

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
fun main(args: Array<String>) {
returnDemo_1()
returnDemo_2()
}

fun returnDemo_1(){
println("Start:"+::returnDemo_1.name)
val intArray = intArrayOf(1,2,3,4,5)
intArray.forEach{
if(it==3)return//遇到a==3的时候直接跳出了函数
println(it)
}
println("End"+::returnDemo_2.name)
}

fun returnDemo_2(){
println("Start:"+::returnDemo_2.name)
val intArray = intArrayOf(1,2,3,4,5)
intArray.forEach(fun(a:Int){
if(a==3)return//遇到a==3只是跳出了这次循环
println(a)
})
println("End:"+::returnDemo_2.name)
}
1
2
3
4
5
6
7
8
9
Start:returnDemo_1
1
2
Start:returnDemo_2
1
2
4
5
End:returnDemo_2

参考资料

在线Kotlin IDE

To Be Continue

阅读量: