深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
koltin中声明一个带属性的类
class Person(val name: String, val age: Int? = null)
在kotlin中属性完全替代了字段和访问器方法,在类中声明一个属性和声明一个变量是一样的,当声明属性的时候,就已经声明了对应的访问器 ,val 生成一个字段和get ,var生成一个字段和set get,声明后在java和kotlin中都是可访问的,这是默认的实现,还可以自定义访问器
自定义访问器
class Rectangle(val height: Int, val width: Int) {
val isRectangle: Boolean
get() {
return height == width
}
}
tip:一般来说如果描述的是类的特征,应该把它声明为属性
2.2.3源码布局,目录和包
一般来说,遵循java的目录和布局并根据包结构把源码文件放到目录中,但是一些小的类可以考虑放到一起
2.3 表示和处理选择,枚举和when
枚举类的使用
//基础的枚举类
enum class Color() {
RED, GREEN, BLUE
}
//带属性的枚举类
enum class ColorS(val r: Int, val g: Int, val b: Int) {
Red(255, 0, 0), Green(255, 0, 0), Blue(255, 255, 255);
//枚举类中有属性和方法时就需要添加分号隔开
fun rgb() = (r + g + b)
}
When
1.when关键字的使用,结合枚举类
fun getColorNum(colorS: ColorS) {
when (colorS) {
ColorS.Red -> 110
ColorS.Blue -> 120
ColorS.Green ->121
}
}
2.when结构比java中的switch强大很多,switch要求必须使用常量作为分支条件,when允许使用任何对象
fun setColor(color1: Color, color2: Color){
when(setOf(color1,color2)){
setOf(Color.RED,Color.BLUE) -> Color.GREEN
}
}
3.使用不带参数的when
//不带参数的when,分支条件就是任意的布尔表达式
fun mix(color1: Color, color2: Color){
when{
(color1 == Color.RED && color2 == Color.BLUE) -> Green
}
}
优点是不创建额外的对象,代价是难以理解
智能类型转换
is关键字
使用后不需要再手动判断类型,java的instanceOf还需要显示的加上类型转换
//智能转换只在变量经过is检查后不再发生变化情况下有效,必须是val属性,而且不能用自定义的访问器
fun eval(a: Any){
if (a is String){
println(a.length)
}
}
as 关键字
表示到特定类型的显示转换
While和for循环
//while和java的while是一样的
fun whileTest(num: Int){
while (num > 0){
//条件满足时触发
}
do {
//第一次会无条件执行,后续会判断条件
}while (num > 0)
}
区间和数列
区间本质上就是两个值之间的间隔,通常是数字,使用…运算符
//区间 ..代表包含
val oneToTen = 1..10
// 不包含
val oneToNine = 1 until 9
如果你可以迭代区间所有的值,这样的区间被称为数列
downto:用于创建递减区间
step:制定步长
//创建一个递减的步长为2的区间
val complexRange = 10 downTo 1 step 2
//结果为[10, 8, 6, 4, 2]
初始化并for输出map
val binaryReps = TreeMap<Char,String>()
fun forMap(){
for(c in 'A'..'F'){
val binary = Integer.toBinaryString(c.code)
binaryReps[c] = binary
}
for((letter,binary) in binaryReps){
println("$letter = $binary")
}
}
使用"in"或"!in"关键字来检查集合和区间的成员
fun isNum(){1 in 1..10}
fun isNotNum(){1 !in 1..10}
fun isEquals(){"hh" in setOf("hh", "ha")
2.4 koltin中的异常
与java不同的点在于,kotlin中throw结构是一个表达式,能作为另外一个表达式的一部分使用
//条件满足变量会初始化,不满足抛出异常,变量也不会初始化
val error =
if (1 in 1..10)
20
else
throw IllegalArgumentException("error")
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
82)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!