
Kotlin发现之旅
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。Google 宣布 Kotlin 成为 Android 官方开发语言。
Alfred Gao
2015年毕业于南京邮电大学,先后从事java后台开发、Android系统开发、Android移动应用开发。
展开
-
8.5 Kotlin 委托详解
委托可能是什么东东呢?kotlin中的委托可能不是太明白是啥意思,联想下生活中委托,是不是请某个人帮助我们来完成任务啊。那么切入正题,Kotlin中委托就是指,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。学过软件设计模式的有没有很熟悉,不就是代理模式吗?Kotlin 委托类委托将被委托类作为构造器形参传入(常用)新建委托类对象新建委托类对象,并自己实现方法/属性属性委托标准委托延迟属性 Lazy可观察属性 Observable把属性储存在映射中Kotlin 直接支持委托模原创 2020-07-28 22:45:02 · 276 阅读 · 0 评论 -
8.3 kotlin枚举类
文章目录定义枚举类枚举类实现接口与Java一样,枚举类是一种特殊的类,kotlin可以通过enum class关键字定义枚举类。枚举类可以实现0~N个接口; 枚举类默认继承于kotlin.Enum类(其他类最终父类都是Any),因此kotlin枚举类不能继承类;非抽象枚举类不能用open修饰符修饰,因此非抽象枚举类不能派生子类;抽象枚举类不能使用abstract关键字修饰enum class,抽象方法和抽象属性需要使用;枚举类构造器只能使用private修饰符修饰,若不指定,则默认为privat原创 2020-07-26 21:42:17 · 395 阅读 · 0 评论 -
8.4 Kotlin泛型
泛型类像 java 一样,Kotlin 中的类可以拥有类型参数:class Box<T>(t: T){ var value = t}通常来说,创建一个这样类的实例,我们需要提供类型参数:val box: Box<Int> = Box<Int>(1)但如果类型有可能是推断的,比如来自构造函数的参数或者通过其它的一些方式,一个可以忽略类型的参数:val box = Box(1) //1是 Int 型,因此编译器会推导出我们调用的是 Box<I原创 2020-07-26 20:46:39 · 219 阅读 · 0 评论 -
7.7 Kotlin接口
文章目录Kotlin 接口概要接口定义使用接口原因Kotlin 接口示例实现单个接口:实现多个接口Kotlin 接口概要与抽象类类似,无法实例化接口,因为它没有任何构造函数。接口可以同时具有抽象和非抽象函数。接口只能有抽象属性(数据成员),不允许非抽象属性。一个类可以实现多个接口。接口的所有抽象属性和抽象成员函数必须在实现它的类中重写。接口定义接口是使用interface关键字来定义:interface Color { val red: String val green原创 2020-07-26 14:52:16 · 243 阅读 · 0 评论 -
8.1 Kotlin Sealed类
文章目录密封类声明密封类的必要性Kotlin 密封类示例密封(Sealed)类是一个限制类层次结构的类。可以在类名之前使用sealed关键字将类声明为密封类。它用于表示受限制的类层次结构。当对象具有来自有限集的类型之一,但不能具有任何其他类型时,使用密封类。密封类的构造函数在默认情况下是私有的,它也不能允许声明为非私有。密封类声明在类名之前使用sealed关键字将类声明为密封类。sealed class MyColor { }密封类的子类必须在密封类的同一文件中声明。se原创 2020-07-26 13:49:11 · 8091 阅读 · 0 评论 -
8.2 Kotlin 数据类
数据类是一个简单的类,用于保存数据/状态并包含标准功能(函数)。数据类声明data关键字用于将类声明为数据类。声明数据类必须至少包含一个带有属性参数(val或var)的主构造函数。类不能标记为开放,抽象,密封或内部。该类可以扩展(继承)其他类,它还可以实现其他接口。示例:data class Persion(var name: String, var age: String)fun main(args: Array<String>) { val persion =原创 2020-07-25 23:11:12 · 182 阅读 · 0 评论 -
7.6 Kotlin抽象类
文章目录抽象类声明抽象类示例使用abstract关键字声明的类称为抽象类。无法实例化抽象类,不能创建抽象类的对象。显式使用abstract关键声明类,才能表示抽象类的方法和属性,否则它是非抽象的。抽象类声明abstract class ABClass { abstract fun doSomething() }注意:抽象类是部分定义方法和属性的类,它们实现类,但必须在子类中实现。如果子类没有实现父类的属性或方法,那么它也是一个抽象类。抽象类或抽象函数不需要使用op原创 2020-07-25 22:31:50 · 245 阅读 · 0 评论 -
7.5 Kotlin 继承
文章目录什么是继承继承定义覆盖 Kotlin 中的成员函数和属性子类调用父类方法和属性Java学习中我们知道,继承是面向对象编程语言的一个重要特征。 继承允许将父类的特性继承到子类。子类包含父类的特性以及它自己的特性。什么是继承假设我们有两个类Dog,Cat。所有这两个类都有一些属性(数据成员)和一些行为(成员函数)。Dog跟Cat具有相同的属性 color、size,具有相同的行为eat()、drink()。为什么不创建具有公共属性和行为的泛化类,让这三个类继承该泛化类。此外,除了继承的类之外,原创 2020-07-25 22:11:45 · 190 阅读 · 0 评论 -
7.4 Kotlin 可见性修饰符
Kotlin中的可见性修饰符是用于限制应用程序中的类,接口,方法和属性使用的关键字,可见性修饰符分为四种不同的类型: 公共,私有,受保护和内部,也就是public、protected、internal、private。public 修饰符注意:可以从项目的任何位置访问public修饰符。它是Kotlin中的默认修饰符。public 可以省略。public class Persion() { public var name: String = "zhangsan" publi原创 2020-07-17 22:41:13 · 195 阅读 · 0 评论 -
7.3 Kotlin构造函数
在Kotlin中,构造函数(Constructor)是一个类似于方法的代码块。 声明构造函数的名称与类的名称相同,后跟括号()。 构造函数用于在创建对象时初始化变量。构造函数也叫构造器Kotlin 中的构造器类型在kotlin中构造函数分为主构造函数(Primary Constructor)和次构造函数(Secondary constructory)主构造函数 Primary Constructor主构造函数定义主构造函数用于初始化类,它在类标题中声明,定义如下:class Person co原创 2020-07-17 21:38:50 · 3935 阅读 · 0 评论 -
7.2 Kotlin嵌套和内部类
文章目录嵌套类嵌套类的定义嵌套类的使用内部类内部类定义内部类使用外部类-内部类交互原理把类定义在其他类里面,定义在内部的类即为嵌套类,包含嵌套类的类称为外部类。定义的方式不一样,又分为嵌套类、内部类。此时的内部类、嵌套类相当于外部类成员,也可以使用public、internal、protected、private来修饰。嵌套类嵌套类的定义当一个类在另一个类中声明时,它被称为嵌套类。嵌套类相当于java的静态内部类(static class)。但是kotlin完全取消了static关键字,所以kotl原创 2020-07-17 20:07:50 · 246 阅读 · 0 评论 -
7.1 Kotlin类和对象
面向对象概述在程序开发初期人们使用结构化开发语言,但随着软件的规模越来越庞大,结构化语言已经不再适合当前的软件开发。面向对象的开发思想开始引入程序中,面向对象设计实质上就是对现实世界的对象进行建模操作。对象的介绍现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体。人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些部分组成的。通常都会将对象划分为两个部分,即静态部分与动态部分。静态部分顾名思义,,这个部分被称为“属性”,任何对象都会具备其自身属性,如一个人,其属性包括高原创 2020-06-27 19:15:07 · 189 阅读 · 0 评论 -
6.4 kotlin集合类型对比分析
文章目录集合类型 CollectionCollectionMutableCollectionListMutable listSetMutableSet:MapMutableMap集合类型常用操作any:allcountfoldfoldrightforeachforEachIndexedmaxmaxByminminBynonereducereduceRightsumBydropdropWhiledropLastdropLastWhilefilterfilterNotfilterNotNulltaketakeL原创 2020-06-24 23:41:05 · 1400 阅读 · 0 评论 -
6.3 Kotlin集合类型之Map、MutableMap
Kotlin集合类型之Map、MutableMapMap声明和创建Map集合Map常用函数Kotlin MutableMap声明和创建MutableMapMutableMap常用函数HashMap、LinkedHashMap、TreeMapMap是一个接口和通用的元素集合。 Map以键和值对的形式保存数据。 映射的键是唯一的,每个键只保留一个值。 键和值可以是不同类型。 也被分为可变的和不可变的,即Map与MutableMap.Map它是不可变的,它的大小固定,方法支持只读访问。要使用Map接口,需要原创 2020-06-24 21:39:39 · 10771 阅读 · 0 评论 -
6.2 集合类型之Set、MutableSet
集合类型之Set、MutableSetSet集合声明和创建Set集合间的运算关系**`containsAll(elements: Collection):`** 判断子集父集**`intersect`** 取两个集合的交集**`subtract`取两个集合的差集****`union` 并集**MutableSetMutableSet的声明与创建MutableSet常用方法Kotlin的集合分为两大类:可变集合和不可变集合,对于Set集合来说,就分为不可变的Set以及可变的MutableSet。Kotli原创 2020-06-16 20:41:15 · 1965 阅读 · 0 评论 -
6.1 集合类型之List 、MutableList
文章目录介绍List创建不可变ListList的方法MutableList创建MutableListMutableList常用方法:add()addAll移除元素setdrop介绍在Kotlin中,集合类型包含三种类型:它们分别是:List、Set、Map,这三种类型都有几个共通点:它们都是接口,并不是实际的类。它们都继承至Collection接口,而Collection< out E>又继承与Iterable< out T>接口。它们几乎上只实现了isEmpty()、si原创 2020-06-16 19:09:06 · 18825 阅读 · 2 评论 -
5.3 Array数组的常用方法(补充)
数组变形:map方法可以把数组变成另外一种类型,并返回列表源码:/** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.map */public inline fun &l原创 2020-06-16 17:28:39 · 242 阅读 · 0 评论 -
5.2 Array数组的常用方法
Array数组的常用方法1、获取元素个数2、获取指定位置的元素3、检查时候含有某个元素4、数组过滤操作符5、查找6、joinToString()7、数组切割8、数组反序列输出9、数组排序9.1、sortedArray、sortedArrayDescending9.2、sortedBy、sortedByDescending9.3、sortBy、sortByDescending1、获取元素个数同字符串一样,数组也可以用size或者count()来获取元素个数。 val persion = array原创 2020-06-12 23:45:50 · 251 阅读 · 0 评论 -
5.1 Kotlin数组
很多教程将数组划归集合,其实这是不对的,在Kotlin数组类型并不是集合中的一种,但是它又和集合有着太多相似的地方,并且数组和集合可以互换。下面我们来看看数组的庐山真面目吧。Array数组在kotlin...原创 2020-06-12 23:38:09 · 876 阅读 · 0 评论 -
Kotlin发现之旅 目录
1.1 Kotlin编程环境配置1.2 Kotlin第一个程序 Hello World2.1 Kotlin常量与变量2.2 Kotlin数据类型2.3 Kotlin字符串2.4 Kotlin元组(Pair & Triple)2.5 Kotlin可空类型2.6 Kotlin基础操作符2.7 Kotlin主类结构2.8 Kotlin异常处理2.9 类的初始化、判断相等、函数返回2.10 类型层次 Any、Unit、Nothing3.1 Kotlin条件判断语句 if when3原创 2020-06-11 22:05:14 · 166 阅读 · 0 评论 -
4.4 Lambda与高阶函数
Lambda与高阶函数Lambda表达式Lambda语法lambda的使用Kotlin高阶函数将函数用作函数参数的情况的高阶函数将函数用作一个函数的返回值的高阶函数经过前面一系列对Kotlin讲解,相信大家已经能对Kotlin有了一个基本的认识。简单的语法已经满足不了你内心的欲望了吧,现在我们开始了解函数的高级玩儿法,也就是Lambda函数跟高阶函数。Lambda表达式本质是匿名函数,它的出现确实是减少了代码量的编写,Lambda作为函数式编程的基础,语法也是相当简单的。这里先通过一段简单的代码演示没原创 2020-06-11 20:36:27 · 212 阅读 · 0 评论 -
4.3 Kotlin函数字面量和闭包
函数字面量函数字面量有的也叫函数字面值,所谓字面量,就是不用变量直接用文本写出,比如:”hello 你好“、"12345"等都是字面量。我们可有将这些字面量赋值给常量或者变量。val str: String = "hello 你好"val str1: String = "12345"函数也可以有字面量,比如: { println("hello 最近好吗周杰伦") }与所有字面量一致,它也可以赋值给一个变量:val show = { println("h原创 2020-06-11 17:33:36 · 358 阅读 · 0 评论 -
4.2 Kotlin标准库函数
Kotlin提供了一个系统库,是Java库的增强,很多函数适配了Java的类型和方法,同时使用Kotlin的语法,下面我们来研究下广泛使用的函数。Applyapply 是 Any 的扩展函数, 因而所有类型都能调用。apply 接受一个lambda表达式作为参数,并在apply调用时立即执行,apply返回原来的对象。apply 主要作用是将多个初始化代码链式操作,提高代码可读性。参考以下实例我们来分析下:fun main(args: Array<String>) { v原创 2020-06-11 15:28:42 · 261 阅读 · 0 评论 -
4.1 Kotlin函数基础
函数是指有名称的一段代码块,能执行和名称相关的功能,函数用于将程序分解为不同的子模块。 它使代码可重用,并使程序更易于管理。函数的定义和使用函数的声明例如数学中我们计算求和就是一种函数,给出两个数字我们就能计算出它们的和,在kotlin中实现如下:private fun sum(a: Int, b: Int): Int { return a + b}根据例子我们可有分析出函数的语法格式如下:修饰符 fun 函数名(参数:参数类型,...): 返回值 { 代码块}注意:原创 2020-06-10 21:27:35 · 280 阅读 · 0 评论 -
3.2 kotlin的循环语句
循环语句就是在满足一定的条件下重复的执行某个操作,学过Java的都知道,java提供了三种常用的循环语句,分别是for循环、while循环、do...while循环,那么kotlin是否如此了,Kotlin同样支持这三种循环,下面我们来看看。For循环:Kotlin废除了Java中的for(初始值;条件;增减步长)这个规则。下面我们来看看kotlin的for循环吧。for 循环可以对任何提供迭代器(iterator)的对象进行遍历,语法如下:for (item in collection)原创 2020-06-09 18:15:16 · 314 阅读 · 0 评论 -
3.1 Kotlin条件判断语句 if when
什么叫二元判断?就是一个表达式的判断结果只有两种是和否,有一句俗话叫做“如果爱,请深爱;如果不爱,请离开”。这就是一个典型的二元判断,我们用kotlin抽象表示出来:原创 2020-06-09 16:38:54 · 2251 阅读 · 0 评论 -
2.10 类型层次 Any、Unit、Nothing
根类型AnyKotlin中所有的类都有一个共同的基类Any,如果类没有申明继承其他类的话,默认继承的就是Any。其实Kotlin中的Any就是对应Java中的java.lang.Object类型。Any的源码如下:public open class Any { /** * Indicates whether some other object is "equal to" this one. Implementations must fulfil the following原创 2020-06-08 19:37:20 · 425 阅读 · 0 评论 -
2.9 类的初始化、判断相等、函数返回
类的初始化java中实例化一个类,通常使用new来创建类的实例的,但是在kotlin中移除了new。如:Java初始化File类File file = new File("/user/test.txt");Kotlin初始化File类val file: File = File("/user/test.txt")引用相等与结构相等引用相等:是指两个无关联的对象,指向了内存中的同一个实例。kotlin中检查两个对象是否引用相等,用“===”和“!==”判断。fun main(原创 2020-06-08 19:00:42 · 170 阅读 · 0 评论 -
2.8 Kotlin异常处理
kotlin 异常处理机制类似 Java 异常处理机制。但有一点不同,Java 中的异常分为两类,受检查异常 和 运行时异常,受检查异常要用try-catch捕获,要么抛出,否则会发生编译错误。而 kotlin 中没有受检查异常,所有异常都是运行时异常,即便是原本在 Java 中的受检查异常,在 kotlin 中也是运行时异常,例如:IOException 在 Java 中是受检查异常,在 kotlin 中是运行时异常。Kotlin异常介绍:Kotlin中的异常有3种,Exception、Erro.原创 2020-06-07 21:08:15 · 1190 阅读 · 0 评论 -
2.7 Kotlin主类结构
kotlin是面向对象的语言,Kotlin程序的基本组成单元是类,类又包含属性和方法。每一个程序都有一个main()方法,含有main()方法的类就是主类,下面看个例子了解下主类结构:package com.alfredimport java.text.SimpleDateFormatimport java.util.*class Test { companion object { @JvmStatic fun main(args: Array<原创 2020-06-07 19:49:11 · 503 阅读 · 0 评论 -
2.6 Kotlin基础操作符
在其他语言学习以及前面语言学习中,你见到的加减乘除以及赋值符号都称为操作符,当然除了(+-*/ =)外还有少部分直接是关键字的操作符。根据操作符可以操作的对象数目,又可以将操作符分为一元、二元、三元操作符,比如:++a、!b、i–等称为一元操作符,a+3、a*b等称为二元操作符,三元操作符只有一个,现在已经废止。下面看看列举的部分一元跟二元操作符。一元操作符 对应函数 +a a.unaryPlus() -a a.unaryMinus() !a a.not()原创 2020-06-05 19:05:45 · 1055 阅读 · 0 评论 -
2.5 Kotlin可空类型
Kotlin刚推出来时就一直宣传解决Java中空指针的痛点。java.lang.NullPointerException这个熟不熟悉,哈哈怎么解决的呢?kotlin引入了可空类型,给开发者带来了完美的解决方案,下面就来学习学习一下kotlin中可空类型。什么是可空类型?简单的理解就是可以为空的类型,换句话说就是任何实体类型跟null的组合。Kotlin中是在原有的类型后跟一个‘?’表示,比如:Int? String? Boolean?可空类型的变量kotlin中可以直接将一个变量声明为可原创 2020-06-04 19:17:44 · 405 阅读 · 0 评论 -
2.4 Kotlin元组(Pair & Triple)
在之前的学习中通常我们对变量赋值时,只带一个值,比如 val name = "alfred"比如我们有时候处理一些复杂情况的话,就只能进行分割处理,比如表述学生的 姓名、性别、年龄,就需要用到对象了。此处我们以Java为例,有的场合我们需要使用学生的(姓名 性别 年龄),有的时候只需要使用(姓名 性别)再或者只使用(姓名 年龄)。可以使用如下处理方案(使用了部分面向对象的知识,不懂也没关系,后续课程里也会介绍)public class Student { private ...原创 2020-06-04 17:21:37 · 5530 阅读 · 0 评论 -
2.3 Kotlin字符串
字符串所谓字符串(String),就是一串字符,也就是文本,用来表示程序运行过程中可能出现与用户交互的文字或符号。单个的文字或符号称之为字符(Character),简称Char。例如 “a”、“1”、“¥”、“我”这些都是字符,“我是Alfred” 类似这样的的一串字符的组合就是字符串。同Java一样kotlin将字符串作为对象来处理。声明字符串在kotlin语言中字符串必须包含在" "之内。例如:"I'm Alfred"、"123"、"qwer"上述这些都是字符串,字符串是能够显示的原创 2020-06-04 16:22:32 · 1176 阅读 · 0 评论 -
2.2 Kotlin数据类型
数值类型Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,Char不属于数值类型,是一个独立的数据类型后续章节会介绍。数值类型 位宽 Byte 8 Short 16 Int 32 Long 64 Float 32 Double 64 ...原创 2020-04-20 22:47:12 · 320 阅读 · 0 评论 -
2.1 Kotlin常量与变量
常量常量、顾名思义就是在预期范围内恒定不变的量,生活中的例子很多,比如你的性别,在某个固定的范围时间区域内,就是固定的属于常量,当然你非要去泰国就另说了。常量的写法:val <标识符> : <类型> = <初始化值>val:是Kotlin的关键字,定义常量的固定用法“=”:意思是赋值。标识符:就是常量名称,不能以数字下划线开头,通常我们...原创 2020-04-20 17:08:02 · 238 阅读 · 0 评论 -
1.2 Kotlin第一个程序 Hello World
可能我们在之前的语言学习中,接触到的第一个语言程序就是“Hello world”,无论你之前学的是C语言、java、C++、C#、Swift等都毫无例外。当然没学过任何语言的小白,也不要气馁,下面我们一起再来领略下最简单的程序。 工欲善其事必先利其器,在我们写代码之前,我们想下代码写在哪儿?怎么执行?有的自认为很牛的大神就说了,可以用记事本、NotPad++、eclips...原创 2020-04-14 18:25:22 · 440 阅读 · 0 评论 -
1.1 Kotlin编程环境配置
一、Kotlin概述:Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。...原创 2020-04-14 16:52:46 · 539 阅读 · 0 评论