定义变量
//延迟初始化,但是必须尽快初始化,且不为空
private lateinit var mView: View
fun test() {
//可变变量
var varInt: Int = 1
var varInt1 = 2
var varString = "123"
//不可变变量
val valInt: Int = 1
val valInt01 = 1
}
//匿名内部类
val runnable: Runnable = object : Runnable {
override fun run() {
}
}
函数
//默认返回Unit,如函数test1()
fun function() {
}
fun function1(): Unit {
}
//返回Int
fun function2(number1: Int, number2: Int): Int {
return number1 + number2
}
//返回Int
fun function3(number1: Int, number2: Int) = number1 + number2
//可变参数
fun function4(vararg value:Int) {}
常见操作符
fun test() {
//可扩展:*
//*Array 把数组转变成可变参数
//可为NULL性:?(变量为空不会报错)
callback?.onCallback()
//指向运算符:-> 指向执行区域
when (2) {
1 -> {}
2 -> {}
else -> {}
}
//忽略可为NULL性:!!(变量为空则报错,同Java)
var callback = null
callback?.onCallback()
//?:类似Java三元运算符
var string:String? = null
print(string?.toString() ?: "empty")
//
//
}
打印和拼接字符串
fun test() {
val age = 1
val name = "tom"
val sex = "Man"
print("age:$age name:$name sex:$sex")
print("age:${age + age}")
//打印时换行操作
//存在前置空格
val info1 = """
line1
line2
"""
//自动去掉前置空格
val info2 = """
line1
line2
""".trimIndent()
//自动去掉前面指定的标记内容@,默认时|
val info3 = """
@line1
@line2
""".trimMargin("@")
//其他
val ticket = """
${'$'}9999.99
""".trimIndent()
}
区间:in/ in downto/ step /in until
fun test() {
//1到9 默认加1
for (i in 1..10) {
}
//不会输出结果
for (i in 10..1) {
}
//大到小 10到1
for (i in 10 downTo 1) {
}
//区间做判断
var i = 5
if (i in 1..9) {
}
//步长指定
for (i in 1..30 step 3) {
}
for (i in 30 downTo 1 step -3) {
}
//0-9,不包含最后的值10
for (i in 0 until 10) {
}
}
比较:==和===
fun test() {
var value1 = 10
var value2 = 10
//比较值
println(value1 == value2)
//比较对象地址
println(value1 === value2)
}
数组
fun test() {
//创建数组
val member = arrayOf(1, 2, 3)//生成Array
val memberEmpty = arrayOfNulls<Any>(3)
val memberList = arrayListOf<Any>(3)//ArrayList
val member1 = Array(5, { value -> (value + 10) })//10..14 value 默认为0
val member1Lambda = Array(5) { value -> (value + 10) }//10..14。->指向运算符,每个value都指向value+10
}
循环
使用when替代if、swith
fun test() {
when (5) {
1 -> {}
2 -> {}
else -> {}
}
when (5) {
in 1..4 -> {}
in 5..7 -> {}
else -> {}
}
val result = when (5) {
in 1..4 -> {
//start
....
//end
false
}
in 5..7 -> {
//start
....
//end
true
}
else -> {
"其他"
}
}
}
自定义View:可以把参数最多的构造放在类后面。(类位置的构造是该类最重要的构造函数)
class NoteRecyclerView constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) :
RecyclerView(context, attrs, defStyleAttr),TextWatcher, View.OnClickListener {
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
init {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
override fun afterTextChanged(s: Editable?) {
}
override fun onClick(v: View?) {
}
}