zoukankan      html  css  js  c++  java
  • kotlin 变量和常量

    变量

    • 如果你是一个java开发者你会觉得kotlin声明变量的方式非常的别扭,但是如果你是一个js开发者你就会觉得kotlin声明变量的方式非常熟悉,kotlin中声明变量必须使用var 和val关键字
    • var :声明的变量表示可变变量,可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和Java中声明变量的方式一样
    • val:声明一个只读变量,相当于java中的final变量,一个val穿件的时候必须初始化,不能被改变
    //初始化
    var a: Int = 1
    val c: Int = 1
    
    //经过推导得出数据类型
    var b = 5
    val d = 50
    
    • var 和 val 是kotlin中定义变量必须使用的关键字
    • 每一行代码结束后可以省略 “;”

    类中声明以及可空变量声明

    • 顶层声明的情况下是可以不用实例化,实际上我们在开发中大多时候都是在一个类中定义一个变量,这种情况称为声明类的属性

    • 必须初始化,如果不初始化则要使用lateinit关键字

    class Test2() {
        var a: String? = "hello"
        val b: String? = null
        var c: String = "hello"
    
        init {
    
            println("a => $a 	 b => $b  	 c => $c")
        }
    }
    
    
    • 声明可空变量

      • 定义 var/val 变量名 : 类型? = null/确定的值
      • 声明时要用标准声明格式定义
      • ? 表示可空声明,不可省略
      • 初始化的值可以为null或确定的变量值

    后期初始化属性

    • 声明后期初始化属性的特点:

      • 使用lateinit关键字
      • 必须是可读且可写的变量,即用var声明的变量
      • 不能声明于可空变量
      • 不能声明于基本数据类型变量。例:Int、Float、Double等,注意:String类型是可以的
      • 声明后,在使用该变量前必须赋值,不然会抛出UninitializedPropertyAccessException异常
    • 延迟初始化属性

      • 延迟初始化:当程序在第一次使用到这个变量的时候在初始化
      • 使用lazy{}高阶函数,不能用于类型推断。且该函数在变量的数据类型后面,用by链接
      • 必须是只读变量,即用val声明的变量

    常量

    Kotlin中声明常量的方式和在Java中声明常量的方式有很大的区别

    //java中的常量
    private final int b = 10
    //等同于kotlin
    val a =6
    
    • 但是kotlin中 val 修饰的只是一个不可修改的变量,kotlin中定义常量需要使用关键字 const

    • const 只能修饰 val 不能修饰 var

    • 声明常量的三种方式

    //const关键字使用
    //顶层声明
    const val aaa: String = "aaa"
    
    //Object修饰类
    object vv {
        const val bb: String = "bb"
    }
    
    //伴生对象
    class cc {
        companion object {
            const val cc: String = "cc"
        }
    }
    
    

    注释

    • 单行注释: //注释内容 与java相同

    • 多行注释:/注释内容/ 与java相同

    • 嵌套多行注释:kotlin中块注释的级联使用,从视觉上给人一种层次分明的感觉

      /*
         注释1
         /*
              注释2
              /*
                 注释3
                 java中是不支持这种注释方式,但是在kotlin中是支持的。从视觉上给人一种层次分明的感觉。
             */
         */
      */
      
  • 相关阅读:
    CodeForces 288A Polo the Penguin and Strings (水题)
    CodeForces 289B Polo the Penguin and Matrix (数学,中位数)
    CodeForces 289A Polo the Penguin and Segments (水题)
    CodeForces 540C Ice Cave (BFS)
    网站后台模板
    雅图CAD
    mbps
    WCF学习-协议绑定
    数据库建表经验总结
    资源位置
  • 原文地址:https://www.cnblogs.com/xiaoxiaoliu/p/10907625.html
Copyright © 2011-2022 走看看