- 博客(19)
- 收藏
- 关注
原创 Kotlin基础10
除了重写Any类的部分函数,提供更好用的默认实现外,数据类还提供了一个函数,它可以用来方便地复制一个对象。有时候你不一定非要定义一个新的命名类不可,也许你需要某个现有类的一种变体实例,但只需用-次就行了,事实上,对于这种用完就丢的类实例,连命名都可以省了。如果你想将某个对象的初始化和一个类实例捆绑在一起,可以考虑使用伴生对象,使用companion修饰符,你可以在一个类定义里声明一个伴生对象,一个类里只能有一个伴生对象。使用object关键字,你可以定义一个只能产生一个实例的类-单例。
2024-04-05 19:32:48
376
1
原创 Kotlin基础9
这段代码编译没有问题,因为编译器看到name属性已经在init块里初始化了,但代码一运行,就会抛出空指针异常,因为name属性还没赋值,firstLetter函数就应用它。kotlin编译器很聪明,要能确定any is 父类条件检查属实,它就会将any当做子类类型对待,因此,编译器允许你不经类型转换直接使用。延迟初始化并不是推后初始化的唯一方式,你也可以暂时不初始化某个变量,直到首次使用它,这个叫作惰性初始化。在使用初始化块时,顺序非常重要,你必须保证块中的所有属性已完成初始化。
2024-04-01 09:40:23
212
原创 Kotlin基础8
针对你定义的每一个属性,btlin都会产生一个field、一个getter、以及一个setter,field用来存储属性数据,你不能直接定义field,Kotlin会封装field,保护它里面的数据,只暴露给getter和setter使用。属性的getter方法决定你如何读取属性值,每个属性都有getter方法,setter方法决定你如何给属性赋值,所以只有可变属性才会有setter方法,尽管Kotlin会自动提供默认的getter和setter方法,但在需要控制如何读写属性数据时,你也可以自定义他们。
2024-03-28 13:42:56
326
1
原创 Kotlin基础7
在Kotlin中,支持内容修改的列表叫可变列表,要创建可变列表,可以使用mutableListOf函数。通过setOf创建set集合,使用elementAt函数读取集合中的元素。getOrDefault,读取键对应的值,或者返回默认值。getOrElse,读取键对应的值,或者使用匿名函数返回默认值。[ ]取值运算符,读取键对应的值,如果键不存在就返回null。getValue,读取键对应的值,如果键不存在就抛出异常。能修改可变列表的函数有个统一的名字:mutator函数。
2024-03-28 09:03:25
318
1
原创 Kotlin基础6
getOrElse是一个安全索引取值函数,它需要两个参数,第一个是索引值,第二个是能提供默认值的lambda表达式,如果索引值不存在的话,可用来代替异常getOrNull是Kotlin提供的另一个安全索引取值函数,它返回null结果,而不是抛出异常。可以看到,调用一个个函数类配置接收者时,这是因为,在lambda表达式里,apply能让每个配函数都作用于接收者,这种行为有时又叫做相关作用域,因为lambda表达式里的所有函数调用都是针对接收者的,或者说,它们是针对接收者的隐式调用。
2024-03-26 13:34:32
278
原创 Kotlin基础5
在Kotlin中,用==检查两个字符串中的字符是否匹配,用===检查两个变量是否指向内存堆上同一对象,而在Java中==做引用比较,做结构比较时用equals方法。字符串截取,substring函数支持IntRange类型(表示一个整数范围的类型)的参数,until创建的范围不包括上限值。我们也可以使用if判断,但是相比之下安全调用操作符用起来更灵活,代码也更简洁, 我们可以用安全操作符进行多个函数的链式调用。和Java一样,Kotlin中所有数字类型都是有符号的,也就是说既可以表示正数,也可以表示负数。
2024-03-25 13:45:10
348
1
原创 Kotlin基础4
幸运的是,kotlin有一种优化机制叫内联,有了内联,JVM就不需要使用lambda对象实例了,因而避免了变量内存分配。为什么要在代码中使用函数类型?要把函数作为参数传给其他函数使用,除了传lambda表达式,kotlin还提供了其他方法,传递函数引用,函数引用可以把一个具名函数转换成一个值参,使用lambda表达式的地方,都可以使用函数引用。在Kotlin中,匿名函数能修改并引用定义在自己的作用域之外的变量,匿名函数引用着定义自身的函数里的变量,Kotlin中的lambda就是闭包。安全调用操作符:(?
2024-03-24 19:10:08
320
1
原创 Kotlin基础3
我们将匿名函数称为lambda,将它的定义称为lambda表达式,它返回的数据称为lambda结果lambda也可以用希腊字符入表示,是lambda演算的简称,lambda演算是一套数理演算逻辑,在定义匿名函数时,使用了lambda演算记法。和具名函数不一样,除了极少数情况外,匿名函数不需要return关键字来返回数据,匿名函数会隐式或自动返回函数体最后一行语句的结果。变量有类型,变量可以等于函数,函数也会有类型。和具名函数一样,匿名函数可以不带参数,也可以带一个或多个任何类型的参数,需要带参数时,
2024-03-22 14:00:36
166
1
原创 Kotlin基础2
kotlin只提供引用数据类型这一种数据类型,出于更高性能的需要,kotlin编译器会在Java字节码中改用基本数据类型。来看最终编译成的字节码帮助我们学习kotlin。Kotlin中没有返回值的函数(Kotlin中默认的fun方法就是Unit类型)when表达式(只要代码复合if /else if,都建议改用when表达式)range表达式:用in关键字表达(是否在一个范围内)(TODO抛异常返回Noting类型)没有返回值类型。默认值参:如果不打算传参,可以指定一个默认值。
2024-03-21 14:40:38
219
1
原创 Kotlin基础1
只读变量并非绝对只读编译时常量只能在函数之外定义,函数内的变量是运行时赋值,编译时常量在变量赋值前就存在。2011年,JetBrains开发Kotlin编程语言,可以用来编写Java虚拟机上运行代码;变量定义关键字 | 变量名 | 类型定义 | 赋值运算符 | 赋值。Kotlin具备高级语言特性,并且与Java遗留代码无缝互操作。Kotlin是跨平台语言、是原生二进制代码(源码)掌握Kotiln的变量常量与类型、条件语句、函数。1、与Java对比,提高学习效率(对比法)Kotlin被称为编译型语言。
2024-03-20 21:06:00
239
1
原创 MVVM-Day4
implementation ('com.alibaba:arouter-api:1.5.2') //ARouter依赖 //版本要改成最新版本。annotationProcessor 'com.alibaba:arouter-compiler:1.5.2' //ARouter依赖。Home为第一页面、Friend为第二页面、Message为第三页面、Mine为第四页面。LoginActivity中跳转方法(同intent跳转)商品、关注、推荐页面。
2024-01-10 18:50:49
401
原创 MVVM-Day3
同Day2创建FoodEntity、Api接口、RetrifitManager管理类。在Model创建BaseModel。最后写View层Activity。
2024-01-09 18:35:49
423
原创 MVVM-Day2
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.0'//万能适配器。implementation 'com.google.code.gson:gson:2.8.0'//gson依赖。//Gson converter gson解析。//RxJava依赖:主要用于消息传递。//rxlifecycle异步线程生命周期管理。3.创建RetrifitManager类。//Retrofit依赖。
2024-01-08 19:51:32
453
原创 MVVM-day1(视图绑定/数据绑定)
通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。布局通常是使用调用界面框架方法的代码在 Activity 中定义的。如果您希望在生成绑定类时忽略某个布局文件,请将。属性添加到相应布局文件的根视图中。//Fragment管理器。
2024-01-07 18:47:11
399
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅