- 博客(24)
- 收藏
- 关注
原创 Kotlin基础9
这段代码编译没有问题,因为编译器看到name属性已经在init块里初始化了,但代码一运行,就会抛出空指针异常,因为name属性还没赋值,firstLetter函数就应用它了。Kotlin编译器很聪明,只要能确定any is 父类条件检查属实,它就会将any当做子类类型对待,因此,编译器允许你不经类型转换直接使用。延迟初始化并不是推后初始化的唯一方式,你也可以暂时不初始化某个变量,直到首次使用它,这个叫作惰性初始化。在使用初始化块时,顺序非常重要,你必须保证块中的所有属性已完成初始化。
2024-04-01 19:00:04
119
原创 Kotlin基础8
属性的getter方法决定你如何读取属性值,每个属性都有getter方法,setter方法决定你如何给属性赋值,所以只有可变属性才会有setter方法,尽管Kotlin会自动提供默认的getter和setter方法,但在需要控制如何读写属性数据时,你也可以自定义他们。>[]取值运算符,读取键对应的值,如果键不存在就返回null>getValue,读取键对应的值,如果键不存在就抛出异常>getOrElse,读取键对应的值,或者使用匿名函数返回默认值>getOrDefault,读取键对应的值,或者返回默认值。
2024-03-31 19:26:20
255
原创 Kotlin基础7
在Kotlin中,支持内容修改的列表叫可变列表,要创建可变列表,可以使用mutable。>to看上去像关键字,但事实上,它是个省略了点号和参数的特殊函数,to函数将它左。>通过setOf创建set集合,使用elementAt函数读取集合中的元素。>getOrElse,读取键对应的值,或者使用匿名函数返回默认值。>[]取值运算符,读取键对应的值,如果键不存在就返回null。>getOrDefault,读取键对应的值,或者返回默认值。,读取键对应的值,如果键不存在就抛出异常。》通过 符号过滤不想要的元素。
2024-03-28 18:35:27
180
原创 Kotlin基础6
let与apply比较,let会把接收者传给lambda,而apply什么都不传,匿名函数执行完,apply会返回当前接收者,而let会返回lambda的最后一行。某项任务,takelf就非常有用,概念上讲,takelf函数类似于if语句,但它的优势是可以直接在对象实例上调用,避免了临时变量赋值的麻烦。集合可以方便你处理一组数据,也可以作为值参传给函数,和我们学过的其他变量类型一样,List、Set和Map类型的变量也分为两类,只读和可变。返回的是lambda结果,也就是true或者false。
2024-03-27 18:40:35
131
原创 Kotlin基础5
Kotlin标准库提供了一些便利函数,使用这些内置函数,你可以抛出带自定义信息的异常,这些便利函数叫做先决条件函数,你可以用它定义先决条件,条件必须满足,目标代码才能执行。在Kotlin中,用==检查两个字符串中的字符是否匹配,用===检查两个变量是否指向内存堆上同一对象,而在Java中==做引用比较,做结构比较时用equals方法。我们也可以使用if判断,但是相比之下安全调用操作符用起来更灵活,代码也更简洁,我们可以用安全操作符进行多个函数的链式调用。使用if判断null值情况。
2024-03-26 19:27:56
130
原创 Kotlin基础4
Kotlin更多地把运行时可能会出现的null问题,以编译时错误的方式,提前在编译期强迫我们重视起来,而不是等到运行时报错,防范于未然,提高了我们程序的健壮性。>要把函数作为参数传给其他函数使用,除了传lambda表达式,kotlin还提供了其他方法,传递函数引用,函数引用可以把一个具名函数转换成一个值参,使用lambda表达式的地方,都可以使用函数引用。在Kotlin中,匿名函数能修改并引用定义在自己的作用域之外的变量,匿名函数引用着定义自身的函数里的变量,Kotlin中的lambda就是闭包。
2024-03-25 18:40:04
258
1
原创 Kotlin基础3
和具名函数一样,匿名函数可以不带参数,也可以带一个或多个任何类型的参数,需要带参数时,参数的类型放在匿名函数的类型定义中,参数名则放在函数定义中。和具名函数不一样,除了极少数情况外,匿名函数不需要return关键字来返回数据,匿名函数会隐式或自动返回函数体最后一行语句的结果。变量有类型,变量可以等于函数,函数也会有类型。定义时不取名字的函数,我们称之为匿名函数,匿名函数通常整体传递给其他函数,或者从其他函数返回。>匿名函数也有类型,匿名函数可以当作变量赋值给函数类型变量,就像其他变量一样,
2024-03-24 18:00:36
200
1
原创 Kotlin基础2
在Kotlin之前,函数不返回任何东西用void描述,意思是“没有返回类型,不会带来什么,忽略它”,也就是说如果函数不返回任何东西,就忽略类型。>Kotlin只提供引用类型这一种数据类型,出于更高性能的需要,Kotlin编译器会在Java字节码中改用基本数据类型。允许你编写条件式,在某个条件满足时,执行对应的代码只要代码包含else if分支,都建议改用when表达式。>还支持字符串里计算表达式的值并插入结果,添加在${中的任何表达式,都会作为字符串的一部分求值。Kotlin的引用类型与基本数据类型。
2024-03-22 18:54:17
404
1
原创 Kotlin基础1
Kotlin的诞生2011年(JetBrains宣布开发Kotlin编程语言,这门新语言可以用来编写在Java虚拟—t———--—机上运行的代码,是Java和Scala语言之外的又一选择。Kotlin的应用范围迅速扩展,它从一门前途光明的编程语言摇身一变,成了这个世界上最重要的移动操作系统的钦定开发语言。编译时常量只能在函数之外定义,因为编译时常量必须在编译时赋值,而函数都是在运行时才调用,函数内的变量也是在运行时赋值,编译时常量要在这些变量赋值前就已存在。>要声明可修改变量,使用var关键字。
2024-03-21 18:49:12
590
1
原创 为什么要学Kotlin
Java语言比较稳健,久经考验。多年来,它一直是最常用的一种编程语言,造就了庞大的生产代码库。自从1995年Java问世以来,对于优秀的编程语言应满足什么条件,人们已通过实践积攒了很多经验教训。然而,Java却裹足不前,开发者喜欢的很多现代语言高级特性,它都没有,或者迟迟加入。Kotlin从这些经验教训中受益良多,而Java中的某些早期设计却愈显陈旧。脱胎于旧语言,Kotlin解决了他们的很多痛点,进化成了一门优秀的语言。相比Java,Kotlin进步巨大,带来了更可靠的开发体验。
2024-03-21 18:38:54
433
1
原创 Kotlin的诞生
Kotlin的诞生2011年(JetBrains宣布开发Kotlin编程语言,这门新语言可以用来编写在Java虚拟—t———--—机上运行的代码,是Java和Scala语言之外的又一选择。2017年,Google在赢得与Oracle的诉讼一年后,Google宣布Kotlin正式获得官方支持,可用于Android应用开发。Kotlin的应用范围迅速扩展,它从一门前途光明的编程语言摇身一变,成了这个世界上最重要的移动操作系统的钦定开发语言。因为具备这些优势,今天,越来越多的公司使用它开发。
2024-03-21 18:34:34
225
1
原创 Kotlin的基础
1、if(x > 0) 1 else -1 -> println("大于0并等于1,或小于0并等于-1") :对于满足x > 0 同时 x == 1 || x == -1,执行后面语句。LOCUST ->"昆虫类"else->"未知动物"}// 输入:DUCK,返回:当前动物的种类为:鸟类println("当前动物的种类为: $result")if(x > 0) 1 else -1 -> println("大于0并等于1,或小于0并等于-1")", 确实是非常爽的一件事情,代码分段等通过{}来进行。
2024-03-21 08:28:47
222
1
原创 Kotlin的诞生
可用于Android应用开发。Kotlin的应用范围循序扩展,他从一门前途光明的编程语言摇身一变,成了这个世界上最重要的移动操作系统的钦定开发语言。Kotlin语法简洁,具备现代高级语言特性,并且能和Java遗留代码无缝互操作。因为具备这些优势,今天,越来越多的公司使用它开发。2011年,JetBrains宣布开发Kotlin编程语言,这门新语言可以用来编写在Java虚拟机上运行的代码,是Java和Scala语言之外的又一选择。2017年,Google在赢得与Oracle的诉讼一年后,
2024-03-21 08:21:57
139
1
原创 mvvm框架
例如,如果回调在 activity 状态保存后运行 fragment 事务,就会触发崩溃,因此我们绝不能调用该回调。是一个类,用于存储有关组件(如 activity 或 fragment)的生命周期状态的信息,并允许其他对象观测此状态。的组件完美配合,因为所有者可以提供生命周期,而观测者可以注册以观测生命周期。类便可以“自给自足”,这意味着,对生命周期状态的变化做出响应的逻辑是在。),该方法必须由类实现。的所有权,并允许编写与这些类搭配使用的组件。是只包含一个方法的接口,指明类具有。
2023-11-12 18:25:01
19
1
原创 MVVM视图绑定
在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且MVVM中的View 和 ViewModel可以互相通信。数据到视图本质原理:Object.defineProperty() 响应式原理 vue的核心。
2023-11-10 20:21:11
33
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人