序言
感谢郭霖大佬为android开发者提供这么好的学习资料,此文章用来记录学习中点点滴滴。
IMG_0203.jpg
Kotlin语法学习
- val声明一个不可变的变量,var声明一个可变的变量,在不确定是用要val还是var的时候,先用val,后面有问题再改成var。
- 函数中只有一行代码时,可以不必编写函数体,用=连接即可。有无返回值都可以这样写
fun test() = print("HelloWorld")
- if语句可以带返回值,java里面是不可以。
fun largeNumber(a:Int,b:Int)=if(a>b)a else b
- when语句类似于switch用法,这里有一个格式 匹配值 -> { 执行操作 }
fun getSex(name: String) = when (name) {
"小明" -> "男"
"小红" -> "女"
else -> "未知生物"
}
- is相当于instanceof,判断字符串或者对象是否相等用==方法
- for循环更换成for-in循环
val range = 0..10 //代表0到10的区间[0,10]
val range2 = 0 until 10 //代表0到9的区间[0,10)
val range3 = 10 downTo 0 //代表0到9的区间[0,10)
val range4 = 1..10 step 2 //代表[1,3,5,7,9]
- kotlin中类默认是无法被继承的,需要在前面加一个open,继承用:
- 4种修饰符private public(默认)protected internal(同一模块可见)
- 数据类前面加上data,单例类 用object
- list,set,map 可以用mutableXof创建(X对应的类型),如果是Xof创建是不可变集合
- 空指针处理
?.判断非空执行
a?:b //这个表示如果a不为空则返回a,否则返回b
!!.强制通过编译 不允许编译判断是否非空
let.{
}//判断不为空就执行括号里面的语句
- 字符串拼接 用$a
val a="中国人"
println("我是一名$a")
- 默认值
fun defaultTest(a: String = "中国人", b: Int = 100) {
print("${a}真牛逼${b} ")
}
//如果是a用默认值,b使用其他值可以这样写
defaultTest(b = 10) //没有顺序的区分
- any和all函数 any判断至少有一个元素满足条件 all表示所有元素满足条件
- with函数,run函数,apply函数
with函数
val value = with(StringBuffer()) {
appendln("健健康康")
appendln("幸福美满")
appendln("心想事成")
toString()
}
run函数
val value2 =StringBuffer().run {
appendln("健健康康")
appendln("幸福美满")
appendln("心想事成")
toString()
}
apply函数(返回自身)
val value3 = StringBuffer().apply {
appendln("健健康康")
appendln("幸福美满")
appendln("心想事成")
toString()
}
- 创建静态方法
方法一、使用object创建单例类,但是里面所有方法都将变成类似静态方法调用方式
方法二、使用companion object,但是其实并不是真正的静态方法,而是调用伴生类
companion object {
fun doSomething(){
}
}
方法三、添加@JvmStatic注解
方法四、使用顶层方法 Java调用的话是 类名+Kt
- lambda表达式中有一些入参没用到的,可以_代替
- lateinit延迟初始化
//是否已经初始化
if(!::a.isInitialized){
}
- inner关键字修饰表示内部类
- 运算符重载
class B(private val value: Int) {
operator fun plus(b: Int) = value + b
}
//固定格式 operator修饰就plus代表+
还有其他格式
IMG_0222.jpg
IMG_0223.jpg
- infix关键字简化函数
infix fun String.abc(perfix:String)=startWith(prefix)
Activity相关
- 跳转到其他activity用
Intent(this,MainActivity::class.java)
startActivity(intent)
- 获取当前Class对象用javaClass
网友评论