2-3 Kotlin语法速览

Kotlin语法速览

一、基础语法

Kotlin学习笔记 - 文集 - 简书

https://github.com/zhiwei1990/android-jetpack-demo

.kt

.java 一个public的class

toplevel

.kt,变量,常量,类,多个。混合。

  • 变量

    var a:Int =2//没有int Int,没有Integer,Double,没有double
    var a = 3
    val π2 = 6//不可变量 和常量的区别在于内存加载的位置不一样
    var ss:String?=null //可以为null必须?
    lateinit var str:String//不能null,必须引用类型。 先声明后赋值
    val sstr:String by lazy{ "by lazy string" }/* hhh  懒加载,第一次初始化的,前面必须val,不能为null*/
    const val π = 3.14//常量 
  • 函数

    fun sum(a:Int,b:Int):Int{//返回值可以这样写 = a+b
      return a+b
    }
    ​
    fun div(c:Int,d:Float = 1f){
      //...
    }
    ​
    fun more(vararg a:Int) :Int{//vararg可变,可以传递多个,想当个数据
      a.get(0),a.get(1),a[2]//通过get进行获取
      //,,,,,
      return 999
    }
    /**
    * 注释
    //
    /**/
    */
    fun main(args:String){
      val sum = sum(1,2)
      val ss = div(2)
      more(2,35,23)
      //打印
      println(sum)
    }
  • 语法

    //for,when
    fun main(args:String){
        
      for(i in 0..10){
        println(i)
      }
        
      for(i in 0 until 10) println(i)
      for(i in 0..10 step 2)println(i)
      for(i in 10 downTo 0 step 2)println(i)
      
      //when
      var i:Type
      when(i){
        i is String->{}
        i !is Float->{}
        i in 0..10->{}
        i==2->{}
        else->{}//不满足以上的条件
      }
      when{
        boolean->{}
        else->{}
      }
    }

    • class 可以写()也可以不写

    class Aclass(){
      //属性
      var age
      var name:String = ""
      lateinit var b:String
      //函数
      fun getSomeInfo():String{
        this::b.isInitialized//boolean 判断是否初始化
        return ""
      }
    }
    ​
    interface AAA{
      fun aaa()
      fun bbb():Int
      fun ccc(){//接口可以有自己的方法体
      }
    }
    • object 理解为工具类

    object Obclass{
      //成员函数。属性,单例静态函数
      fun aaa(){}
    }
    ​
    //类名直接调用方法()
    Obclass.aaa()
    • data class 实体类 (必须要有一个成员参数,成员参数必须要有数据类型)

    data class AAA(var name:String,var age:Int = 20){
      var grade:String = ""
    }
    val aa = AAA("hhh",98)
    • sealed class 必须在同一个文件kt里面 申请子类

    //密封类,类似枚举类型作用 kt
    sealed class Slclass()
    data class Ac(var a:Int) :Slclass
    object Obc:Slclass

  • 构造函数

    class AAA(private var b:Int=9)
    ​
    class AAA private constructor(private val a:Int){//添加private相当于声明
      val ccc = a
      fun aaa(){
        a//方法里面参数a是取不到的
      }
    }
    ​
    class AAA{
      constructor()//如果不写  constructor()/
      constructor(var b:Int){//次级构造函数必须调用主构造函数
        //kkkkk
      }
      constructor(var a :Int,var b:String="")
      init{
        //init some data
      }
    }
    ​
    class AAA{
      //constructor()//如果不写  constructor()次级构造函数必须:super调用主级构造函数
      constructor(var b:Int):super{//次级构造函数必须调用主构造函数
        //kkkkk
      }
      constructor(var a :Int,var b:String=""):super
      init{//调用主构造函数之后直接调用init方法
        //init some data
      }
    }
  • 高阶函数

    //also,with,let,apply,run, 没有区别,根据语境
    var s:String?=null //如果是null都可以去执行
    s?.also{it->//同时在执行其他事情
      
    }
    ​
    s?.let{it->
      
    }
    ​
    //this->仅仅为了看清楚。
    s?.apply{this->
      length//相当于s.length
    }
    with(s){this->
      ?.
    }
    s?.run{this->
      
    }
    ​
    //typealias 定义别名
    typealias ob = java.Observer 
    ​

//take,takeunless,takeif,runcatching(异常),group(数组),map,flatmap(语法糖),last,first,.....

  
  代码导入修改
​
![1635388339972](C:\Users\123456\AppData\Roaming\Typora\typora-user-images\1635388339972.png)
​
​
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值