美文网首页
kotlin基础语法记录(一)

kotlin基础语法记录(一)

作者: 大冷月 | 来源:发表于2021-08-22 13:49 被阅读0次
    1. 可读、可读写、延迟初始化
    var  //可读写
    val  //只读
    lateinit  //晚一点再进行初始化,会被声明为可空类型
    //可空类型,不可空类型
    //平台类型
    java中是通过注解实现可空类型和不可空类型(Nullable、NonNull)
    
    
    var name: String? = null // ? 声明一个可空类型的变量
    name?.length()   // ? 安全调用,判空
    name!!.length() // !! 强制调用,不判空
    
    //Java中int float double long
    对应kotlin->Int Float Double Long  不可空类型
    
    //java中Int Float Double Long
    对应kotlin->Int?  Float?  Double?  Long? 可空类型
    
    //声明一个延迟初始化的不可空变量
    private lateinit name : String 
    

    静态类型编程语言:一个变量的类型一旦确定了就不能改变
    动态类型编程语言:一个变量的类型可以随时改变。python\js\groovy

    1. 静态方法
    //1、kotlin中没有static关键字
    //2、kotlin中静态方法写法,文件中直接定义方法和变量,也叫顶层函数,包级函数
    //       a)java调用kotlin静态方法--->类名Kt.方法名()
    //       b) @file:JvmName("AAA")修饰后,在Java中可以使用AAA.方法名()调用。需要写在文件最上面,package之前
    
    //object创建类并创建其对象
    //object修饰的类,可以认为变量和方法都会被定义为静态的。其实是创建了CacheUtils的对象
    object CacheUtils{
    }  
    //在kotlin中调用使用CacheUtils.getXX()
    //在Java中调用使用CacheUtils.INSTANCE.getXX()
    //该方法其实是创建了这个类的单例对象去使用的。创建匿名内部类也使用object关键字
    
    
    //非object的类里面使用
    class MyApplication{
        companion object {
            fun getXX():String{}
        }
    }
    //在Java中使用XX.Companion.
    
    companion object {
         //加上  @JvmStatic可以在Java类里面使用类名.方法名()调用
        @JvmStatic 
        fun getXX():String{}
    }
    
    1. 类型判断和转换
    is  instanceof
    as  强转
    AAA::class kotlin的class
    AAA::class.java java的class
    
    void对应Unit
    Object对应Any
    
    1. switch case
    when  Java中switch的高级版,支持表达式
    when (code){
      in 200..299 ->{}
    
    }
    
    1. 构造方法
    construct(name:String) String super(name){}
    
    1. get set方法
    set
    
    //保证只生成一个公开的成员变量,而不是生成set get方法
    @JvmField
    var username:String? = null
    
    1. 数组
    创建数组
    arrayOf("a","b","c")  基本类型会自动装箱,因此基本类型不使用
    intArrayOf(1,2,3)
    数组长度size
    arrayOf()
    intArrayOf()
    
    1. 枚举
    
    
    1. 编译器常量
    class XXX {
        companion object {
          //使用const关键字,类似于java中的static final String
          private val const NAME = "张三"
        }
    }
    
    
    1. List、Map等集合类
    //要么显示的声明类型
    val list:ArrayList<String> = ArrayList()
    
    //要么使用类型推断
    val list = ArrayList()
    
    //要么使用类型推断
    val list = arrayListOf<String>()
    
    //要么使用
    val list = mutableListOf<String>()
    
    //要么使用
    val list:MutableList<String> = ArrayList()
    
    //不能使用List,因为kotlin中List是不可修改的,没有add函数的
    val list:List<String> = ArrayList()
    
    //遍历
    for (name : in list) {  
    }
    
    
    1. 内部类
    //非静态内部类,需要inner修饰符
    inner class XX {}
    
    //静态内部类
    class XXX {}
    
    
    1. internal
    当前模块内可见,可以使某个public的类,仅在当前module内被访问到,其他moudle内访问不到
    某些类,希望在当前module内到处哭访问,但是又不希望外部mudule访问。
    
    1. 内部类使用外部类this对象
    internal class Outer {
        internal inner class Inner {
            var outer: Outer = this@Outer
        }
    }
    
    1. 受检异常
    Kotlin 不需要使⽤ try-catch 强制捕获异常
    
    1. 声明接⼝/抽象类/枚举/注解
    // 声明抽象类
    abstract class
    // 声明接⼝
    interface
    // 声明注解
    annotation class
    // 声明枚举
    enmu class
    
    1. 编译期常量
    在静态变量上加上 const 关键字变成编译期常量
    
    1. 标签
    在 Java 中通过 「 类名.this 例如 Outer.this 」 获取⽬标类引⽤
    在 Kotlin 中通过「 this@类名 例如 this@Outer 」获取⽬标类引⽤
    
    1. 遍历
    for(item in items)
    
    1. 嵌套类
    在 Kotlin 当中,嵌套类默认是静态内部类 (不持有外部类引⽤)
    通过 inner 关键字声明为普通内部类 (内部使⽤外部对象时就会持有外部类引⽤)
    
    1. 可⻅性修饰符
    默认的可⻅性修饰符是 public
    新增的可⻅性修饰符 internal 表示当前模块可⻅
    
    1. open/final
    Kotlin 中的类和函数,默认是被 final 修饰的 ( abstract 和 override 例外)
    
    1. 注释
    注释中可以在任意地⽅使⽤ [] 来引⽤⽬标,代替 Java 中的 @param @link 等。
    
    1. ⾮空断⾔
    可空类型强制类型转换成不可空类型可以通过在变量后⾯加上 !! ,来达到类型转换。
    

    相关文章

      网友评论

          本文标题:kotlin基础语法记录(一)

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