美文网首页
Kotlin学习1

Kotlin学习1

作者: flynnny | 来源:发表于2021-05-17 16:46 被阅读0次

    1声明变量和内置数据类型

    fun main(){
      var str:String  = "Hello world"
      //var a:Int = 5
      println(str)
    }
    
    1.png

    2只读变量

    要声明可修改变量,使用var关键字
    要声明只读变量,使用val关键字

    fun main(){
      val name:String = "jack"
      var age:Int = 10;
      age+=1;
      println(name)
    }
    

    val 也不是绝对不能修改的(后面)

    3类型推断

    对于已经声明并赋值的变量,他允许你省略类型定义

    fun main(){
      var str = "Hello world"
      println(str)
    }
    

    4编译时常量

    只读变量并非绝对只读;
    编译时常量只能在函数外定义(包括main函数),因为编译时常量必须在编译时赋值,而函数都是在运行时才调用,函数内的变量也是在运行时赋值,编译时常量要在这些变量赋值之前就已存在;
    编译时常量只能是常见的基本数据类型:String、Int、Double、Float、Long、Short、Byte、Char、Boolean

    const val MAX = 200
    fun main(){
      val a = 5;
      println(a)
    }
    

    5查看kotlin字节码

    两种方式
    1shift键两次 输入 show kotlin
    2Tools->Kotlin->Show Kotlin Bytecode

    2.png

    6Kotlin引用类型与基本数据类型

    java 有两种数据类型:引用类型和基本数据类型
    Kotlin只提供引用类型这一种数据类型,出于更高性能的需要,Kotlin编译器会在java字节码中改用基本数据类型。

    7表达式(range)

    if/else if 表达式

    range表达式
    in A...B,in关键字用来检查某个值是否在指定范围之内

    when表达式
    允许你编写条件式,在某个条件满足时,执行对应的代码
    只要代码包含else if分支,都建议改用when表达式

    fun main(){
      val age = 4  
      if(age in 0..3){
        println("婴幼儿")
      }else if(age in 4..12)
        println("少儿")
      }else{
        println("未知")
      }
    
      if(age !in 1..3){
        println("..!in.")
      }
    

    8表达式(when)

    fun main(){
      val school= "小学"
      val level:Any = when(school){
        "学前班" -> "幼儿"
        "小学" -> "少儿"
        "中学" -> "青少年"
        else -> {
          println("未知")
        }
      }
      println(level)
    }
    

    9String模板

    模板支持在字符串的引号内放入变量值
    还支持字符串里计算表达式的值并插入结果,添加在${}中的任何表达式,都会作为字符串的一部分求值。

    fun main(){
      val origin="jack"
      val dest = "rose"
      println("$origin love $dest")
    
      val flag = false
      println("Answer is: ${if(flag)"我可以" else "对不起"}")
    }
    

    10函数头

    3.png
    fun main(){
      println(doSomething(5,false))
    }
    private fun doSomething(age:Int,flag:Boolean):String{
      return "result"
    }
    
    

    11函数参数,默认值参

    不打算传入参数,可以与先给参数指定默认值

    fun fix(name:String,age:Int = 2){
      println(name+age)
    }
    fun main(){
      fix("jack")
    }
    

    12具名函数参数

    如果使用命名值参,就可以不用管值参的顺序

    fun fix(name:String,age:Int = 2){
      println(name+age)
    }
    fun main(){
      fix(age=4,name="jack")
    }
    

    13Unit函数

    不是所有函数都有返回值,Kotlin中没有返回值的函数叫Unit函数,也就是说他们的返回类型是Unit。在Kotlin之前,函数不返回任何东西用void描述,意思是“没有返回类型,不会带来什么,忽略他”,也就是说如果函数不返回任何东西,就忽略类型。但是,void这种解决方案无法解释现代语言的一个重要特性:泛型。

    fun fix(name:String,age:Int = 2){
      println(name+age)
    }
    fun main(){
      println( fix(age=10,name="Rose"))
    }
    
    4.png

    14Nothing类型

    TODO函数的任务就是抛出异常,就是永远别指望他能运行成功,返回Nothing类型

    fun fix(name:String,age:Int = 2){
      println(name+age)
      TODO("nothing")
      println("after nothing.")
    }
    fun main(){
      println( fix(age=10,name="Rose"))
    }
    
    5.png

    15反引号中的函数名

    Kotlin可以使用空格和特殊字符对函数命名,不过函数名要用一对反引号括起来。
    为了支持Kotlin和java交互操作,二Kotlin和java各自却有着不同的保留关键字,不能作为函数名,使用反引号扩住函数名就能避免任何冲突

    fun `**~special function with weird name**`(){
      println("i am weird")
    }
    fun main(){
      `**~special function with weird name**`()
    }
    
    6.png

    16小结回顾

    相关文章

      网友评论

          本文标题:Kotlin学习1

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