
Kotlin入门到实战
文章平均质量分 61
该专栏集中分享平时在学习kotlin过程中的一些博客记录,系统介绍kotlin学习从入门到实战的内容。
林克在思考
一个喜欢折腾技术的开发者
展开
-
Kotlin系列之Kotlin简介
从今天开始,我将陆续分享一系列Kotlin相关的文章,希望可以借此来促使自己学习一门新的语言。原创 2018-01-01 17:38:43 · 693 阅读 · 0 评论 -
Kotlin系列之Kotlin初体验
这一篇我们开始Kotlin代码之旅,一步步入门Kotlin。一、Kotlin开发工具Kotlin语言在开发之初,它的语言和插件工具是同步开发的。这里推荐IntelliJ IDEA15及以上,IDEA这款开发工具可以说是获得好多程序猿的推崇,IDEA15以后Kotlin的插件是开箱即用的。你可以选择IDEA的社区版或者是专业版。当然专业版是收费的。如果你是学生,用学校的邮箱是可以申原创 2018-01-04 23:56:49 · 755 阅读 · 0 评论 -
Kotlin系列之变量和函数
这一节我们将学习Kotlin的变量和函数。Kotlin的变量1 . Kotlin的变量声明格式 Kotlin中的变量声明以关键字开始,在大部分情况下可以省略类型,这里我们同样将Kotlin与Java进行对比Kotlin变量声明格式如下://关键字 变量名:类型(可省略)val result: Int = 24Java变量声明格式如下://类型 变量名原创 2018-01-06 23:04:28 · 629 阅读 · 0 评论 -
Kotlin系列之类和属性
这一节我们学习Kotlin的类和属性。学习过Java的小伙伴对面向对象应该不会陌生吧。虽然说Kotlin支持直接在文件中写函数,但是它同样支持面向对象,下面就来了解一下Kotlin的类和属性相关的知识。Kotlin的类Kotlin中类的声明也是使用class关键字,下面我们通过对你Java代码和Kotlin代码来学习。Java代码public class People原创 2018-01-07 21:50:33 · 532 阅读 · 0 评论 -
Kotlin系列之目录和包
今天我们学习Kotlin的目录和包。前面我们了解了Kotlin的类和属性,但是我们都只是写了很少的代码,当代码量增加时,我们就需要一定的方法来组织和分类存放我们的代码,以便于整个项目的维护,如果我们将所有的代码都写在一个kt文件中是不行的。一旦我们开始写出多个kt文件,就涉及到多个文件和类之间的互相调用,这就是我们这一节讨论的Kotlin的目录和包。Java中的目录和包我们先说一下J原创 2018-01-08 22:32:10 · 2179 阅读 · 4 评论 -
Kotlin系列之when关键字
今天,我们来学习一下Kotlin的when关键字。when关键字是一个有返回值的表达式,也就是它可以返回一个值。下面说说它的各种用法。when处理枚举类在Java中我们一般使用switch来处理枚举类,比如我想对每一种枚举值返回一个结果,就可以使用switch来处理。这种处理的需求在Kotlin中使用when关键字来完成。原创 2018-01-11 23:00:48 · 7745 阅读 · 0 评论 -
Kotlin系列之枚举类
今天我们一起学习Kotlin中的枚举类。原创 2018-01-09 22:19:33 · 601 阅读 · 0 评论 -
Kotlin系列之智能转换
今天我们来学学Kotlin中的智能转化。在开始说概念之前,我们先说说Java中的一个现象,然后再对比Kotlin中的处理。原创 2018-01-14 23:25:24 · 718 阅读 · 0 评论 -
Kotlin系列之循环
今天说说Kotlin中的循环迭代的内容。我们这里还是对比Java来学习Kotlin中的循环迭代的写法。原创 2018-01-15 22:44:50 · 758 阅读 · 0 评论 -
Kotlin系列之迭代集合与map
今天来学习一下Kotlin中如何迭代集合和map。还是以往的惯例,先说说Java中的方式,在对比看看Kotlin中的方式。Java中迭代集合和map这个属于Java中的基础知识,这里贴一下代码,方便后面与Kotlin对比。 Java代码ListString> list = new ArrayList();SetString> set = new HashSet();原创 2018-01-16 22:36:32 · 1458 阅读 · 0 评论 -
Kotlin系列之in运算符
今天我们聊聊Kotlin中的in运算符。其实我们上一节也看到了in的身影,那里它是用来迭代集合或者map的,我们这里说说in的其他用处。原创 2018-01-17 22:43:10 · 3496 阅读 · 0 评论 -
Kotlin系列之异常
这一节我们说说Kotlin中的异常。Java中的异常我们知道,在Java中,异常是一个绕不过的话题,说到异常,最先想到的就是try...catch...finally,在Kotlin中也是同样的,使用方式几乎是不变的,但是也有一些小小的变动。这里我们还是以往的惯例,先放Java代码,再上Kotlin代码。Java代码public int readNumber(Buffer原创 2018-01-18 22:03:05 · 1431 阅读 · 0 评论 -
Kotlin系列之命名参数和默认参数
今天一起来看看Kotlin的命名参数和默认参数。如果你学过Python,那你对这两个概念一定不陌生,那我们今天就来学习一波Kotlin中的默认参数和命名参数。遇到的问题为了说明命名参数和默认参数出现的必要性,我们先抛出一个问题,如何打印出一个集合,并且定制它的打印形式。在Java中我们最常用的思路就是重写toString()方法或者是写一个打印集合的工具类,比如下面的Java代码原创 2018-01-22 22:57:05 · 2853 阅读 · 0 评论 -
Kotlin系列之顶层函数和属性
今天一起来看看Kotlin中的顶层函数和属性。遇到的问题我们都知道,Java中,所有的代码都是依托于类而存在,我们所谓的函数作为类的方法,我们所谓的属性作为类的属性。但是在有些情况下,我们发现有些方法可能不是属于某一个特定类,有些属性也不是属于某一个特定的类。所以我们就创建了很多的Java工具类和属性的常量类,就像下面这样。Java代码public class Const原创 2018-01-22 23:00:02 · 4403 阅读 · 0 评论 -
Kotlin系列之扩展函数和属性
今天,让我们聊聊Kotlin中的扩展函数和属性的话题。扩展函数和属性,见名知意,就是可以做到在目前已存在的类的基础上添加函数和属性,只是这些函数和属性定义在类的外部,是不是很好奇呢?那就一起来看看吧。扩展函数我们直接来一个例子进行分析,给String类添加一个成员函数lastChar,用来获取字符串的最后一个字符。先上代码。Kotlin代码package expand原创 2018-01-24 22:36:05 · 900 阅读 · 0 评论 -
Kotlin系列之接口
今天说说Kotlin中的接口。还是同样的,在说Kotlin中的接口之前先来说说Java中的接口。然后对比着来学习。Java中的接口先上一段代码吧,然后再总结一下Java中的接口的一些相关知识点。Java代码public interface Clickable { String mFlag = "flag"; int count = 10; v原创 2018-01-29 23:23:08 · 1261 阅读 · 2 评论 -
Kotlin系列之继承相关修饰符
Kotlin同Java一样也有一些针对类、成员、和方法的修饰符,今天我们先看看和继承相关的几个修饰符。与继承相关的几个修饰符主要包括final、open、abstract、override,下面我们通过具体的例子来说说他们的具体使用。类和方法默认是final的在Java中,类默认是可以被继承的,方法默认是可以被重写的。除非你将类或者方法使用final关键字进行修饰。但是在Kotl原创 2018-02-01 01:04:55 · 528 阅读 · 0 评论 -
Kotlin系列之可见性修饰符
今天一起来看看Kotlin中的可见性修饰符。Java的访问修饰符首先也是简单先说一下Java中的可见性修饰符相关的概念,这里用一个表格来对比着看一下。 访问修饰符 类 包 子类 其他包 public √ √ √ √ protected √ √ √ x 默认 √ √ x x p原创 2018-02-03 00:09:20 · 2943 阅读 · 0 评论 -
Kotlin系列之内部类和嵌套类
今天我们再来看看Kotlin中的内部类和嵌套类。还是一样的套路,我们要和Java进行对比学习。Java中的内部类和静态内部类在Java中内部类简言之就是在一个类的内部定义的另一个类。当然在如果这个内部类被static修饰符修饰,那就是一个静态内部类。关于内部类 和静态内部类除了修饰符的区别之外,最主要的是内部类会默认持有一个外部类的引用,也正是这个原因内部类可以直接引用外部类原创 2018-02-05 11:43:41 · 2262 阅读 · 0 评论 -
Kotlin系列之密封类
今天说说Kotlin中的密封类。在Java中没有密封类这个概念,所以就没法和Java进行对比了,主要看看Kotlin中的密封类的出现目的和使用方法。为什么会出现密封类我们先不说密封类是什么,先看看为什么需要密封类。下面先通过一段代码来看。Kotlin代码interface FatherClassclass SonClass1: FatherClass{}cl原创 2018-02-06 13:11:36 · 1704 阅读 · 0 评论 -
Kotlin系列之主构造方法和初始化语句块
前面我们已经说过类和接口的知识点,今天来看看Kotlin中的主构造方法和初始化语句块。我们知道在Java中也存在构造方法的概念,也有初始化块的概念。所以今天还是拿Kotlin和Java进行对比学习。Java中的构造方法和初始化块在Java中构造方法有以下几点的规则。 1 . 构造方法没有返回值,方法名必须与类名相同2 . 如果没有显式声明构造方法,Java会给我们生成一个默原创 2018-02-07 13:12:39 · 4619 阅读 · 2 评论 -
Kotlin系列之从构造方法
上一节说到了Kotlin中的主构造方法和初始化语句块,今天来看看Kotlin中的从构造方法。在Java中的问题在Java中,我们有时候为了用不同的参数来创建一个对象,就会声明多个构造方法,也就是构造方法的重载。然后我们可能会让某些构造方法的某些参数为默认值。在Java中是没有主构造方法和从构造方法的概念的,都叫构造方法,就像下面这样。Java代码public cla...原创 2018-03-05 00:11:50 · 1127 阅读 · 0 评论 -
Kotlin系列之接口中的属性
今天我们看看如何让在Kotlin的接口中声明属性。在前面的文章中我们已经介绍过Kotlin中的接口,这里我们先复习一下,然后再重点说说Kotlin中的接口如何声明属性。Kotlin中的接口下面是一段Kotlin中接口声明的代码,帮助大家复习一下。Kotlin代码package ktinterface Clickable{ fun click() ...原创 2018-03-06 00:03:47 · 6227 阅读 · 1 评论 -
Kotlin系列之通用对象方法
今天我们来说说Kotlin中的通用对象方法。什么是通用对象方法呢?其实就是所有对象都拥有的方法,再进一步说,就是toString()、equals()和hashCode()。今天就来看看Kotlin中的这几个方法。老规矩,先来稍微提一下在Java中这三个方法的一些知识点,再对比着来看。Java中的通用对象方法在Java中,这几个方法都是Object的方法。 toStr...原创 2018-03-06 22:26:54 · 1787 阅读 · 0 评论 -
Kotlin系列之数据类和类委托
今天聊聊Kotlin中的数据类和类委托。在Java中是没有数据类和类委托的概念的。但是简单一点说数据类就是我们常说的Java中的Bean,它只是单纯为了表示数据而存在,就是一个方便的数据容器,而类委托表面看来就是主要实现将一个类委托给另一个类,具体内容我们往下看。Kotlin中的数据类上一节的代码中我们讨论了Kotlin中的通用对象方法,我们演示用的类就可以看作是一个数据类。代...原创 2018-03-07 23:05:08 · 940 阅读 · 0 评论 -
Kotlin系列之对象声明
隔了比较久的一段时间了,继续来学习一点Kotlin,今天说说Kotlin中的对象声明。我们都知道在Java中,必须先有类,然后才能new出对象,也就是声明类和创建对象是两个分开的步骤,并有先后次序。在Kotlin中,我们可以使用object关键字在声明定义一个类的同时创建出一个对象,也就是我们标题所说的对象声明,下面就来一起看看对象声明的相关知识点。基本用法对象声明的基本格...原创 2018-07-02 00:10:35 · 1364 阅读 · 0 评论 -
Kotlin系列之伴生对象
上一节中说到了对象声明,这次我们聊聊对象声明的一种特殊情况,对象声明在一个类内部,也就是标题所说的伴生对象。伴生对象最简单直白的理解就是与一个类相伴而生的对象,由于它处于类内部,所以必然和包含它的类存在某种联系。基本用法伴生对象使用关键字companion来声明,看起来就像是在object关键字前面加的一个修饰符。它的一般格式如下:class 外部类名{ com...原创 2018-07-02 23:20:51 · 2762 阅读 · 0 评论 -
Kotlin系列之Lambda表达式(1)
今天开始后续的几篇Kotlin的文章会介绍Kotlin中Lambda表达式相关的内容。什么是Lambda表达式在Java8中引入了Lambda表达式,这是最令Java开发者激动和期待的一个功能。那究竟什么是Lambda表达式呢?Lambda表达式本质上是可以传递给其他函数的一小段代码,我们在之前的Java或者Kotlin中,一个函数的参数可以是一种简单的基本数据类型变量或一...原创 2018-07-11 00:54:53 · 479 阅读 · 0 评论 -
Kotlin系列之对象表达式
今天学习一下Kotlin中的对象表达式。对象表达式,是一种代替Java中的匿名内部类的方法。下面看看具体的用法,以及它与Java匿名内部类之间的区别。代替Java匿名内部类我们都知道Java的匿名内部类,这里给一个最简单的匿名内部类的Java代码示例:String[] fileList = new File("./").list(new FilenameFilter(...原创 2018-07-06 00:17:40 · 1006 阅读 · 0 评论 -
Kotlin系列之Lambda表达式(2)
上一篇文章讲到了最基本的Lambda表达式,今天这篇文章继续讲Lambda表达式中的在作用域中访问变量。Java中的内部类访问变量当我们在函数内部使用匿名内部类时,我们可以在匿名内部类内使用函数的参数和函数内的局部变量。当我们在使用Lambda表达式时,我们也可以访问这个函数的参数和使用那些在Lambda表达式之前定义的变量。下面先看一个在Java中匿名内部类中访问函数参数...原创 2018-07-29 17:38:17 · 778 阅读 · 0 评论 -
Kotlin系列之Lambda表达式(3)
今天一起来看看Kotlin中与Lambda相关的成员引用的内容。定义先说说什么是成员引用,这里的引用指的就是变量引用,就相当于Java中的引用概念。成员的概念这里包含了成员变量和成员方法。这都是很官方的的说法。说白了,就是类里面的变量和函数。所以我们这篇文章讨论的就是如果一个成员函数或者变量已经被定义好了,我们如何使用Lambda表达式的语法,将它传递给另一个函数。成员...原创 2018-09-01 09:39:46 · 397 阅读 · 0 评论 -
Kotlin系列之集合的函数式API
几乎各种语言都对集合操作提供了方便的库函数,Kotlin也不例外,今天就来说说Kotlin中与集合操作相关的函数式API。在开始之前先说一下这里的演示数据,后面演示数据的代码将不再重复出现://数字集合val numList = listOf(1, 2, 3, 4, 5, 6)//People数据类data class People(val name: String, val ag...原创 2018-10-08 23:05:07 · 744 阅读 · 0 评论 -
Kotlin系列之序列
今天来一起学习下Kotlin中的序列。在开始之前,先说一下我们定义的演示数据,后面数据定义的代码就不重复出现了。//Person数据类data class Person(val name: String, val age: Int) val personList = listOf(Person("小红", 22), Person("小明", 23), ...原创 2018-12-03 23:12:15 · 900 阅读 · 0 评论 -
Kotlin系列之带接收者的Lambda
今天来看看Kotlin中关于lambda的两个函数with和apply,我们将其称为带接收者的lambda,不了解为什么会这么命令,看完下面的实例你应该就可以理解了。注意,上面也已经说了,with和apply其实是两个函数,虽然它们看起来像是关键字。with函数简单使用我们在Java中经常会写下面这样的代码:public String getRes() { StringBui...原创 2018-12-30 00:20:24 · 2443 阅读 · 0 评论 -
Kotlin系列之类型可空性
作为一个程序员,最常见的问题恐怕就是NPE了吧,有时候即使很小心的编码,还是避免不了出现NPE,在Kotlin中,它力争把这个在运行时常常出现的问题在编译器解决掉,让我们写出更加健壮不易崩溃的代码。Java的类型系统存在的问题在说kotlin之前,我们先谈谈Java中的类型系统。什么是类型呢?通俗来讲其实就是对所有我们要表示的数据确定一个具体的分类。比如,我们把12这个数据分为int这个分类...原创 2019-01-06 18:56:32 · 726 阅读 · 0 评论 -
Kotlin系列之可空类型的处理
在前面的文章中,我们已经看到了kotlin为了解决NPE问题作出的一些努力。这篇文章我们继续学习kotlin中与可空类型处理相关的一些知识。非空断言在程序的编写过程中有这样一种场景,我们已经在前一个函数中对一个可空类型的变量进行了检查,之后我们在接下来的函数中使用这个变量,我们其实已经很明确地知道这个变量前面已经进行了判空处理,后续不可能为空,但是编译器无法清楚地推测出来,这时候在编译器眼...原创 2019-02-20 22:57:06 · 795 阅读 · 0 评论 -
kotlin系列之基本类型
今天一起来看看kotlin中的基本类型,包括基本的数据类型和其他一些特殊的与Java不同的类型。基本数据类型在Java中数据类型被分为基本数据类型和引用数据类型。在kotlin中所有的数据类型都是引用数据类型。与Java中的数据类型对应,kotlin中的数据类型有如下几种:数据类型java中的类型kotlin中的类型整数byte short int longBy...原创 2019-03-03 22:18:56 · 549 阅读 · 0 评论 -
Kotlin系列之数组与集合
今天说说kotlin中的数组和集合。我们前面说过kotlin是一门更加纯粹的面向对象的语言,所以kotlin中的数组与集合与Java中会有一些不同,但是为了性能考虑,同时因为kotlin的最终编译产物是运行在JVM之上的,还为了保持kotlin与Java良好的互操作性,所以kotlin的最终编译产物又在尽可能接近Java的编译产物。对象数组我们在之前的代码中看到kotlin的main函数...原创 2019-03-09 15:59:40 · 1206 阅读 · 0 评论 -
kotlin小悟-安全调用符
今天看看kotlin中的安全调用符的一个注意点。之前的文章已经讲过ktlin中的安全调用符,可以点击查看。知识点kotlin中的安全调用符 ?. 是线程安全的。代码验证我们打开IDEA写下面一段代码:class Sample(var name: String?){ fun test(){ if(name != null){ print...原创 2019-08-30 00:30:26 · 842 阅读 · 0 评论 -
kotlin小悟-这个继承有点不一样
今天聊聊kotlin中关于构造函数的一个话题。我们知道,在kotlin中构造函数分为主构造函数和从构造函数,关于详细的内容,可以点击下面的文章链接了解。Kotlin系列之主构造方法和初始化语句块Kotlin系列之从构造方法前置知识我们经常会写这样的代码://父类open class Father{}// 子类class Son: Father(){ }注...原创 2019-09-02 00:15:42 · 374 阅读 · 0 评论