美文网首页
kotlin基础学习-1(基础语法相关)

kotlin基础学习-1(基础语法相关)

作者: ftd黑马 | 来源:发表于2022-03-14 09:00 被阅读0次
  • 只读变量
    要声明可修改变量,使用var关键字。
    要声明只读变量,使用val关键字。
    //可修改变量
    var name:String = "hello world"
    name = "hello china"
    
    //只读变量
    val age:Int= 20
    age = 30   //这行会报错,因为val声明为只读
  • 类型推断
    对于已声明并赋值的变量,kotlin允许省略类型定义。比如上面的代码可以修改为:
    var name = "hello world"
    val a = 5
  • 编译时常量
  1. 只读变量并非绝对只读。
  2. 编译时常量只能在函数之外定义,因为编译时常量必须在编译时赋值,而函数都是在运行时才调用,函数内的变量也是在运行时复制,编译时常量要在这些变量赋值前就存在。
  3. 编译时常量只能是常见的基本数据类型:String,Int,Double,Float,Long,Short,Byte,Char,Boolean
const val MAX = 200
fun main() {
    const val MIN = 2//报错
}
  • kotlin的引用类型与基本数据类型
  1. java有两种数据类型:引用类型与基本数据类型。
  2. kotlin只提供引用类型这一种数据类型,处于更高性能的需要,kotlin编译器会在java字节码中改用基本数据类型。
  3. 我们可以在kotlin字节码代码中查,双击shift选用show kotlin bytecode
  • range表达式与when表达式
  1. if/else if表达式与java是一样的
  2. range表达式
    in A..B,in关键字用来检查某个值是否在指定范围之内,in后面可以接list,set等,!in 表示不在这个指定范围。
val age = 14
    if (age in 0..18){
        println("未成年")
    }else if (age in 18..60){
        println("中年")
    }else{
        println("老年")
    }
  1. when表达式
  • 允许你编写条件式,在某个条件满足时,执行对应的代码。
  • 只要代码包含else if分支,都建议改用when表达式。
val school = "小学"
    val level = when(school){
        "学前班" -> "幼儿"
        "小学" -> "少儿"
        "大学" -> "青少年"
        else ->{
            println("未知")
        }
    }
    println(level)
  • string 模板
  1. 模板支持在字符串的引号内放入变量值
  2. 还支持字符串里计算表达式的值并插入结果,添加在${}中的任何表达式,都会作为字符串的一部分求值。
val origin = "Jack"
    val dest = "Rose"
    println("$origin love $dest")
  • 函数
//fun是函数的关键字,如果不声明private,默认是public,这段函数意思为入参是一个int和一个string,返回是一个string
//如果不打算传入值参,可以预先给参数指定默认值
//比如在插件化框架中的startActivity有好多的重载函数,这时候可以用kotlin的特性,具名函数,
//直接调用的时候为    doSomething(name = "2",age = 222),这时候参数顺序都可以随意写
private fun doSomething(age:Int = 2,name:String):String{
    return "i do"
}
  • Unit函数
    不是所有的函数都有返回值,kotlin中没有返回指的函数叫Unit函数,也就是说他们的返回类型是Unit。在kotlin之前,函数不返回任何东西用void描述,意思是“没有返回类型,忽略它”,也就是说如果函数不返回任何东西,就忽略类型。但是void这种解决方案无法解释现代语言的一个重要特性,泛型!
  • Nothing类型
    TODO函数的任务就是抛出异常,返回Nothing类型。
fun main() {
    TODO()
}

Exception in thread "main" kotlin.NotImplementedError: An operation is not implemented.
    at study01.NimingfuncKt.main(Nimingfunc.kt:5)
    at study01.NimingfuncKt.main(Nimingfunc.kt)
  • 反引号中的函数名
  1. kotlin可以使用空格和特殊字符对函数命名,不过函数名要用一对反引号括起来
  2. 为了支持kotlin和java互操作,而kotlin和java各自却有着不同的保留关键字不能作为函数名,使用反引号括住函数名就能避免任何冲突。

相关文章

网友评论

      本文标题:kotlin基础学习-1(基础语法相关)

      本文链接:https://www.haomeiwen.com/subject/nkirdrtx.html