上一节 简单认识了下kotlin
的基本类型和常用流程控制,这节继续学习
一、Kotlin
变量声明
首先,kotlin
变量的声明必须使用关键字var
或val
var
: 用此关键字声明的变量表示可变变量,即可读且可写。相当于Java
中普通变量val
: 用此关键字声明的变量表示不可变变量,即可读且不可写。相当于Java
中用final
修饰的变量
1.1基础用法:
关键字 变量名:数据类型 = xxx
eg:
//立即初始化
var var_a: Int = 10
//推导出类型
var var_b = 5
//没有初始化的时候,必须声明类型
var var_c :Float
var_c = 12.4f
println("var_a => $var_a \t var_b => $var_b \t var_a => $var_c")
//$符号表示引用的意思
注意:在类中声明变量时,必须初始化,如果不初始化,需要使用lateinit
关键字
1.2声明可空变量:
- 在声明的时候一定用标准的声明格式定义。不能用可推断类型的简写。
- 变量类型后面的
?
符号不能省略。不然就和普通的变量没区别了。 - 其初始化的值可以为
null
或确定的变量值。
定义:
var/val
变量名 : 类型? = null/确定的值
eg:
var var_a : Int? = 0
val val_a : Int? = null
1.3后期初始化
前面提到在类中定义一个变量(属性)时是必须初始化的,但是在平时Android
开发中我们对组件变量的声明是不需要直接初始化,这。。。。,Kotlin
中后期初始化满足了你。
- 使用
lateinit
关键字 - 必须是可读且可写的变量,即用
var
声明的变量 - 不能声明于可空变量。
- 不能声明于基本数据类型变量。例:
Int
、Float
、Double
等,注意:String
类型是可以的。 - 声明后,在使用该变量前必须赋值,不然会抛出
UninitializedPropertyAccessException
异常
eg:
1.4延迟初始化
程序第一次使用到这个变量(属性)时再初始化
- 使用
lazy{}
高阶函数,不能用于类型推断。且该函数在变量的数据类型后面,用by
链接。 - 必须是只读变量,即用
val
声明的变量。
eg:
// 声明一个延迟初始化的字符串数组变量
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{
"我是延迟初始化字符串变量"
}
二、Kotlin
注释
kotlin
中注释和java基本一样,只是多了个多行注释(嵌套多行注释),个人觉得没卵用,只是看起来有点层次感
eg:
/*
第一层块注释
/*
第二层块注释
/*
第三层快注释
这种注释方式在java中是不支持的,但是在kotlin中是支持的。算是一个亮点吧(貌似意义不大)。
*/
*/
*/
其他注释和java一个样
三、进制数
- 二进制数
- 八进制数(Kotlin不支持)
- 十进制数
- 十六进制数
eg:
var g = 0x0F //十六进制数
var h = 0b00001011 //二进制数
var k = 123 //十进制数
// ps:Kotlin不支持八进制数
println(" g => $g \n h => $h \n k => $k);
输出结果:
g => 15 h => 11 k => 123