Kotlin学习(二)变量,常量

var: 用此关键字声明的变量表示可变变量,即可读且可写。相当于Java中普通变量

val: 用此关键字声明的变量表示不可变变量,即可读且不可写。相当于Java中用final修饰的变量

Kotlin变量

1.1、基础用法

定义格式: 关键字 变量名: 数据类型 = xxx

如:

//立即初始化
var var_a: Int = 10

//推导出类型
var var_b = 5

//没有初始化的时候,必须声明类型
var var_c: Float
var_c = 12.3f
var_c += 1

 var age:Int
 var name:String="Zack"
1.2、在类中声明以及声明可空变量

上面的是演示变量的基础定义。而且只有在顶层声明的情况下是可以不用实例化的。但是在实际开发当中,一般都是在一个类中去定义变量,这种情况被称为声明类的属性。
其特点如下:必须初始化,如果不初始化,需使用lateinit关键字

 var id: Long // 编译报错 必须初始化
    var name: String? = null
    var url: String? = null
    var mbid: String? = null
1.2.2、声明可空变量
可空变量的特点:
  • 在声明的时候一定用标准的声明格式定义。不能用可推断类型的简写。
  • 变量类型后面的?符号不能省略。不然就和普通的变量没区别了。
  • 其初始化的值可以为null或确定的变量值。

定义:

var/val 变量名 : 类型? = null/确定的值
 var name: String? = null
    var url: String? = null
    var mbid: String? = null
1.3、后期初始化与延迟初始化

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

  • 使用lateinit关键字
  • 必须是可读且可写的变量,即用var声明的变量
  • 不能声明于可空变量。
  • 不能声明于基本数据类型变量。例:Int、Float、Double等,注意:String类型是可以的。
  • 声明后,在使用该变量前必须赋值,不然会抛出UninitializedPropertyAccessException异常。
    实例讲解:举一个Android中常见的例子
// 声明组件
private lateinit var mTabLayout : TabLayout

lateinit var a : Int // 会报错。因为不能用于基本数据类型。

// 赋值
mTabLayout = find(R.id.home_tab_layout)

// 使用
mTabLayout.setupWithViewPager(mViewPager)

Kotlin常量

Kotlin中使用val时候对应的Java代码

Kotlin中的 val numA = 6 等价于 Java中的:public final int numA = 6

很显然,Kotlin中只用val修饰还不是常量,它只能是一个不能修改的变量。那么常量怎么定义呢?其实很简单,
在val关键字前面加上const关键字。

即:

const val NUM_A = 6

其特点:const只能修饰val,不能修饰var

声明常量的三种正确方式

  • 在顶层声明
  • 在object修饰的类中声明,在kotlin中称为对象声明,它相当于Java中一种形式的单例类
  • 在伴生对象中声明
// 1. 顶层声明
const val NUM_A : String = "顶层声明"

// 2. 在object修饰的类中
object TestConst{
    const val NUM_B = "object修饰的类中"
}

你可能感兴趣的:(Kotlin学习(二)变量,常量)