![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Kotlin学习
文章平均质量分 62
Kotlin学习总结
孔小乐
这个作者很懒,什么都没留下…
展开
-
Kotlin学习 - object和companion object使用
Kotlin中没有static,可以用companion object将类内静态变量和函数封装起来使用。作为匿名内部类的时候可以访问外部类的成员变量。并且和Java匿名内部类不同,可以同时实现多个接口。中,如果想声明一个单例类使用的就是object关键字,定义一个全局单例类,代码如下;命名,也可以不给名字,这个时候它会有个默认的名字: Companion,被companion object定义的类也叫作。类内部实现的单例不能访问类外的变量。的定义完全属于类的本身,所以。还可以在类内部实现一个单例。原创 2023-07-06 17:46:50 · 864 阅读 · 0 评论 -
Kotlin学习 - 高阶函数和内联函数
如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数。以前开发的时候,入参或返回值都是基本类型或者对象,但是在Kotlin中出现了一个新的类型:函数类型。就是函数也可以像String这种类型一样做入参或者返回值。原创 2023-07-02 19:25:05 · 1693 阅读 · 1 评论 -
Kotlin学习 - 懒加载Lateinit和By lazy
但是在kotlin中,如果我们不在变量声明的时候初始化,调用的地方就会报错,提示:Variable ‘s’ must be initialized。,而且就算没有初始化这个对象,在其他地方也可以正常调用该对象的方法和变量。Java编码中,上面的声明比较常见,如果声明的时候没有初始化,对象默认是。从代码可以看到,由于Kotlin的空指针检查,声明的时候就必须加上。为解决上面的调用问题,可以使用kotlin中的。是固定写法,写的时候先写双冒号,否则后面。修饰后,对象可以先不用初始化。在需要初始化的时候可以用。原创 2023-06-28 14:35:56 · 1116 阅读 · 0 评论 -
Kotlin学习 - 运算符重载
运算符在编译时会替换成方法的调用,比如+会替换成plus方法,Kotlin的每个运算符都有其对应的方法。在Kotlin中通过对运算符进行重载,允许任意两个对象进行相加,或者是进行更多其他的运算操作。上面例子就使用运算符重载实现了让两个Money对象相加的功能。3、当然对象还可以和数字相加,在上面基础上我们在加一个重载方法。原创 2023-06-27 19:09:12 · 698 阅读 · 0 评论 -
Kotlin学习 - 顶层方法和扩展函数
Java中所有的方法是需要定义在类中的,因此我们在封装一些工具方法的时候会先建一个Util的工具类,然后在里面添加我们需要用到的静态方法。修饰的类,不可以继承扩展,但是在Kotlin中扩展函数就极大地丰富了String的行为,而且任意Kotlin类均可以进行扩展。通过上面例子可以理解顶层方法就是直接定义在文件中的方法,无需依赖类存在,这应该就是为啥叫“顶层”的意思了。扩展函数表示即使在不修改某个类的源码的情况下,仍然可以向该类添加新的函数。顶层属性跟顶层函数一样,也是放在文件的顶层。原创 2023-06-21 17:34:06 · 813 阅读 · 0 评论 -
Kotlin学习 - Kotlin中的标准函数let、with、run、apply、also
函数用法类似,都要在某个对象上调用,并且只接收一个Lambda 参数,也会在Lambda 表达式中提供调用对象的上下文,但是apply函数无法指定返回值,而是会自动返回调用对象本身。函数无法指定返回值,只能返回调用对象本身,因此无法直接返回,我们的返回值声明的是String类型,因此还需要转化下。上面代码是会编译报错的,是因为全局变量的值随时都有可能被其他线程所修改,即使做了判空处理,仍然无法保证。中,如果入参是可以为空的,那么函数中每次调用该对象函数都需要加。,代码编写太过繁琐。这个时候就可以结合使用。原创 2023-06-20 19:31:41 · 1116 阅读 · 0 评论 -
Kotlin学习 - 可空系统类型
对这种需求,Kotlin提供了另外一套可为空的类型系统,我们需要在编译时期就将所有潜在的空指针异常都处理掉,否则代码将无法编译通过。,如果我们的程序存在空指针异常的风险,那么在编译的时候会直接报错,修正之后才能成功运行,这样就可以保证程序在运行时期不会出现空指针异常了。,这样study就可能为空,因此编译器会提示错误,但是如果我们确认每次调用。不过这是一种有风险的写法,如果对象为空了汇报空指针异常。,说明这个变量或者常量可以为空,在使用的时候需要注意。函数的入参都不为空,也可以使用。函数的入参后面加一个。原创 2023-06-19 11:04:47 · 1137 阅读 · 0 评论 -
Kotlin学习 - 集合
Kotlin集合分为可变集合和不可变集合,不可变的集合指的就是该集合只能用于读取,无法进行添加、修改或删除操作。将集合中的每个元素都映射成一个另外的值,映射的规则在Lambda 表达式中指定,最终生成一个新的集合。5)当Lambda 表达式的参数列表中只有一个参数时,也不必声明参数名,而是可以使用。3)如果Lambda 参数是函数的唯一一个参数的话,还可以将函数的括号省略。注意调用转换集合类型函数会生成一个新的集合对象,原来的类型不受影响。函数是用来过滤集合中的数据的,它可以单独使用,也可以配合。原创 2023-06-16 16:20:28 · 1469 阅读 · 0 评论 -
Kotlin学习 - 数据类与单例类
通过数据类与单例类学习可以看出Kotlin对Java中的各种繁琐代码进行了优化,可以使程序员把更多精力放在业务逻辑上面,也简化了代码行数,减轻了代码阅读量。看上去像是静态方法的调用,但其实Kotlin在背后自动帮我们创建了一个Singleton类的实例,并且保证全局只会存在一个Singleton实例。关键字时,就表明你希望这个类是一个数据类,Kotlin会根据主构造函数中的参数帮你将。等固定且无实际逻辑意义的方法自动生成,从而大大减少了开发的工作量。在Kotlin中创建一个单例类的方式极其简单,只需要将。原创 2023-06-15 15:27:53 · 1115 阅读 · 0 评论 -
Kotlin学习 - 接口 + 可见修饰符
kotlin和Java中的接口定义类似:接口实现Student中实现Study接口,需要实现Study中声明的全部未实现函数。如下为接口多态使用:接口函数实现Kotlin允许对接口中定义的函数进行默认实现。由于doHomework有默认实现,接口实现类不会再强制要求实现,运行下面程序:可见修饰符如下是Java和Kotlin中可见修饰符的范围和对比。原创 2023-06-15 13:58:00 · 95 阅读 · 0 评论 -
Kotlin学习 - 类和对象
使用Java定义一个Person} . . . }使用Kotlin来定义这个类nameageval person = Person() person . name = "Kotlin" person . age = 20 person . printInfo() } //输出 Kotlin's age is 20。原创 2023-06-15 11:08:05 · 1336 阅读 · 1 评论 -
Kotlin学习 - 枚举和密封类
在文章中有一句话:如果 when 作为一个表达式使用,则必须有 else 分支,因为Kotlin编译器会强制检查默认选项 ,那什么情况下编译器能检测出所有的情况呢?就是本文章标题的两个种情况,枚举和密封类。原创 2023-06-15 10:51:21 · 524 阅读 · 0 评论 -
Kotlin学习 - 选择控制if 和when
if和when。原创 2023-05-31 15:15:56 · 989 阅读 · 0 评论 -
Kotlin学习 - 函数
是表达式,不是语句。语句和表达式的最大的区别在于,表达式有值,语句是没有值。因此看上面代码,直接return的就是。)这种循环结构,大多数都是控制结构都是表达式。而在Java中所有的控制语句都是语句。这里解释下,刚学习Kotlin看到上面直接。表达式,这也是和Java代码不同的地方。Kotlin中除了(原创 2023-05-31 11:35:07 · 116 阅读 · 0 评论 -
Kotlin学习 - 字符串操作
1、和许多脚本语言一样,Kotlin让我们可以在字符串字面值中引用局部变量,只需要前面加个。替换操作符,下面是一个简单的使用,可以看到替换以后产生一个新的字符串,原字符串没有改变。下面例子中声明了两个字符串常量,声明的第一个字符串会存放在字符串常量池中,声明。,它允许在一个表达式中给多个变量赋值,解构常用来简化变量的赋值。截取的字符串包含开始索引的字符,不包含结束索引的字符。的时候会生成一个新的对象,所以上面例子中一共有3个对象。,是对字符串的内容进行比较,相同返回。,是对字符串的地址进行比较,相同返回。原创 2023-05-31 14:21:37 · 322 阅读 · 0 评论 -
Kotlin学习 - 变量
上面的两个变量声明的时候并未声明变量类型,这是因为Kotlin存在类型推导机制,str1和str2会根据赋值默认推导为String类型。Kotlin不再存在基本类型,将全部使用对象类型。Kotlin的变量的关键字有两个,分别是。变量,只能被赋值一次,不能被重新赋值。当然也可以显示的指明变量的类型。可变变量,对应java的非。不可变变量,对应java的。变量.,可以重复赋值。原创 2023-05-31 11:06:28 · 130 阅读 · 0 评论