02_Kotlin基础知识

Kotlin基础知识

1.定义变量和常量

变量var
var n:Int = 30
var ok:Int
var abc = 124
var s = “abc”

常量val        
val m:Int = 124

位置不同:在Kotlin中数据类型放到变量后面,并用:分割
变量用var 常量用val
Kotlin内置类型首字母都是大写的
Kotlin可以根据右侧初始化的值自动推导数据类型,初始化可以不写数据类型

2.定义函数

函数头,主要包括函数名和标识函数的关键字
参数,包括参数名和参数类型
返回值,包括返回值的类型,如果没有返回值

有返回值
fun add(m:Int,n:Int):Int{
    return m + n
}

无返回值
fun process(m:Int):Unit{
    println(m)
}

无返回值
fun process(m:Int){
    println(m)
}

3.注释

和Java区别是多行注释可以嵌套

4.数据类型

数据类型 占用字节数
Double 8
Float 4
Long 8
Int 4
Short 2
Byte 1

不能像Java一样自动转换
要用toByte toShort toInt等方法

表示Long,数值后面加l或L,123L
表示Float,数值后面加f或F,123.3F

目前Kotlin只支持十六进制和二进制
十六进制用0x开头,0x1E
二进制:数值用0b开头,0b10011

下划线_分隔符把数值分开
val oneMillion = 1_000_000

5.字符类型

Char表示
如果c和97比较必须c.toInt之后才可以比较

6.布尔类型

Boolean
7.数组

arrayOf可以存储任何值的数组
val arr = arrayOf(1,2,3,’a’,”adsa”,true)
超过范围就会索引越界和Java一样

arrayOfNulls直接定义一个长度为10的整型数组
val arr1 = arrayOfNulls<Int>(10)
没初始化默认为null,因为是对象

使用Array类构造数组长度和初始化数据方法
var arr3 = Array(10,{i -> (i*i).toString()})

intArrayOf、shortArrayOf等
var arr4: IntArray = intArrayOf(10,20,30)

8.字符串

普通字符串和Java一样

保留原始格式的字符串(raw string)
var s1 = """
    hello
            world
    时间
“”“

字符串模版(占位符)
val i = 10
val s2 = "i = $i"

9.包(Package)

Java 包与目录有关
Test.java
package a.b;

Kotlin 与当前目录无关
他可以给包取别名
import baidu.com.MyClass as my

10.条件语句when

类似Java的switch
x = 1
when(x){
1->{
println(“1—-“)
}

    2->{
        println("2-----")

    }

    else{
        println("其他")
    }

}    

如果是对应的多个值
var y = 1
when(y){
    1,2,3,4,5->{
        println("以下符合条件")
    }
    10->{
        println("以下不符合条件")
    }
    else{
        println("其他")

    }
}


when作为表达式使用

var xyz = 1
var m = when(xyz){

    1->{
        println("xyz==1")
        20
    }

    2->{
        println("xyz==2")
        40
    }
    else{
        100
    }
}

使用in关键字

var n = 20
when(n){
    in 1..15->print("满足条件")

    in 16..20->println(“不满足条件”)

    !in 100..200->println("hello world")
    else->println("条件未知")
}


分支条件是一个函数

fun double(x:Int):Int{
    return x * x
}

var ok = 9
when(ok){
    double(2)->println("不满足条件")
    double(3)->println("满足条件")
    else->println("条件未知")
}

11.循环语句中的for

var arr = intArrayOf(1,2,3,4,5)
for(item: Int in arr){
println(item)
}

for(i in arr.indices){
    println("arr[$i] = " + arr[i])
}

for((index, value) in arr.withIndex()){
    println("arr[$index] = " + value)
}

12.循环语句while

var i = 0
while(i++ < 10){
    println(i)
}

do{
    if(i==8){
        continue
    }
    println(i)

    if(i == 6){
        break
    }

}while(--i > 0)