- 顶层函数及属性

- 在对象声明中声明的函数和属性

- 枚举常量

函数

fun关键字定义,可将表达式作为函数体、返回值类型自动推断的函数

fun sum(a: Int, b: Int) = a + b

返回无意义的值,且Unit可被忽略,这点对应void无返回值的方法。

fun printSum(a: Int, b: Int): Unit {

println(“sum of $a and $b is ${a + b}”)

}

定义变量

val a: Int = 1 // ⽴即赋值

val b = 2 // ⾃动推断出 Int 类型

val c: Int // 如果没有初始值类型不能省略

c = 3 // 明确赋值

注释

和java、JS一样支持行注释、块注释,但Kotlin 的块注释可以嵌套

字符串模板特性

var a = 1

// 模板中的简单名称:

val s1 = “a is $a”

a = 2

// 模板中的任意表达式:

val s2 = “${s1.replace(“is”, “was”)}, but now is $a”

使用可空值及null检测

当某个变量的值可以为null的时,须在声明处的类型后添加?来标识该引用为空。

支持类型检测和自动类型转换

is 运算符检测⼀个表达式是否某类型的⼀个实例。 如果一个不可变的局部变量或属性已经判断出为某类型, 那么检测后的分支中可以直接当作该类型使用

使用简洁的for while do-while循环

do-while中定于的变量在while()中有效

使用when表达式替换switch分支

fun describe(obj: Any): String =

when (obj) {

1 -> “One”

“Hello” -> “Greeting”

is Long -> “Long”

!is String -> “Not a string”

else -> “Unknown”

}

使用区间

in运算符检测某个数是否在指定区间内,支持区间迭代、数列迭代

区间迭代:

for (x in 1…5) {

print(x)

}

数列迭代:

for (x in 1…10 step 2) {

print(x)

}

for (x in 9 downTo 0 step 3) {

print(x)

}

使用集合

对集合迭代、用in来判断集合内是否包含某实例

使⽤ lambda 表达式来过滤(filter)和映射(map)集合:

fruits.filter { it.startsWith(“a”) }

.sortedBy { it }

.map { it.toUpperCase() }

.forEach { println(it) }

最后

说一千道一万,不如自己去行动。要想在移动互联网的下半场是自己占有一席之地,那就得从现在开始,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。基础夯实好了,高楼才能够平地而起,稳如泰山。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节

还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

一线互联网面试专题

379页的Android进阶知识大全

379页的Android进阶知识大全

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
img-Ik88SL3D-1714988734140)]

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐