Kotlin:变量、常量、注释
变量
1.基础用法
kotlin变量的声明方式与Java中声明变量有很大的区别,而且必须使用var或val关键字。其中:
var: 用此关键字声明的变量表示可变变量,即可读且可写。相当于Java中普通变量 val: 用此关键字声明的变量表示不可变变量,即可读且不可写。相当于Java中用final修饰的变量
2.声明可空变量
var/val 变量名 : 类型? = null/确定的值,如:
var var_a : Int? = 0
val val_a : Int? = null
3.lateinit
使用lateinit关键字
- 必须是可读且可写的变量,即用var声明的变量
- 不能声明于可空变量。
- 不能声明于基本数据类型变量。例:Int、Float、Double等,注意:String类型是可以的。
- 声明后,在使用该变量前必须赋值,不然会抛出UninitializedPropertyAccessException异常。
// 声明组件
private lateinit var mTabLayout : TabLayout
lateinit var a : Int // 会报错。因为不能用于基本数据类型。
// 赋值
mTabLayout = find(R.id.home_tab_layout)
// 使用
mTabLayout.setupWithViewPager(mViewPager)
4.lazy{}函数用于延迟初始化
所谓延迟初始化即:指当程序在第一次使用到这个变量(属性)的时候在初始化。
- 使用lazy{}高阶函数,不能用于类型推断。且该函数在变量的数据类型后面,用by链接。
- 必须是只读变量,即用val声明的变量。
// 声明一个延迟初始化的字符串数组变量
private val mTitles : Array<String> by lazy {
arrayOf(
ctx.getString(R.string.tab_title_android),
ctx.getString(R.string.tab_title_ios),
ctx.getString(R.string.tab_title_h5)
)
}
// 声明一个延迟初始化的字符串
private val mStr : String by lazy{"我是延迟初始化字符串变量"}
常量
简单用法
加上const
const val NUM_A = 6
const 只能修饰val,不能修饰var
声明常量的三种方法
- 在顶层声明
- 在object修饰的类中声明,在kotlin中称为对象声明,它相当于Java中一种形式的单例类
- 在伴生对象中声明
//顶层声明
const val a:String = "顶层声明"
//在object修饰的类中
object TestConst{
const val aa = "object 修饰的类中"
}
//伴生对象中
class TestClass{
companion object {
const val aaa = "伴生对象中声明"
}
}
fun main(args: Array<String>) {
println("a = $a")
println("aa = $aa")
println("aaa = $aaa")
}
注释
kotlin的注释和java的注释大同小异
kotlin支持嵌套注释,java不支持,冷知识
如:
/*
第一层注释
/*
第二层注释
/*
第三层注释
*/
*/
*/
参考资料:https://github.com/Jetictors/KotlinLearn