![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Kotlin学习
文章平均质量分 52
kotlin新手从零开始学习
HryReal
while(!dead) { study(); }
展开
-
kotlin学习之基础(一)
这一节主要介绍Kotlin基础部分,与Java有区别的地方。介绍一些基础,控制流和异常内容。一.基础val和varvar指向可变引用val指向一个不可变的引用,但是如果这个引用是可变的val languages = array("Java","C++");//languages = array("Java","C++") //错误languages.add("kotlin") /...原创 2019-05-09 17:19:30 · 234 阅读 · 0 评论 -
kotlin学习之类委托(八)
如果我们需要一个集合类,含有MutableCollection的所有功能,并可以修改两个方法,add和addAll,那么我们需要写一个新的类继承MutableCollection,并把一个MutableCollection成员放到里面,覆盖并修改他的所有方法,并修改add和addAll方法。class DefaultCollection<T> : MutableCollection&...原创 2019-05-09 17:23:46 · 139 阅读 · 0 评论 -
kotlin学习之伴生对象(十五)
伴生对象最简单直白的理解就是与一个类相伴而生的对象,由于它处于类内部,所以必然和包含它的类存在某种联系。基本用法伴生对象使用关键字companion来声明,看起来就像是在object关键字前面加的一个修饰符。它的一般格式如下:class 外部类名{ companion object 伴生对象名{ //属性 //方法 }}简单的代码示例如下 com...原创 2019-06-22 14:31:59 · 352 阅读 · 0 评论 -
kotlin学习之泛型(十四)
本小结介绍的是kotlin的泛型,先从Java的泛型开始介绍:一. 泛型kotlin中使用泛型的方式跟Java相差不大:class Box<T>(t: T) { var value = t}// 使用val box: Box<Int> = Box<Int>(1)//kotlin可以自动推断类型val box2 = Box(1)二....原创 2019-05-21 15:23:30 · 260 阅读 · 0 评论 -
kotlin学习之集合(十三)
一. 集合概述首先,Kotlin的集合只有两种类型,可变类型和不可变类型,可变类型是在不可变类型前面加上Mutable:List和MutableList<ESet 和 MutableSetMap<K, out V> 和 MutableMap<K, V>他们的类图如下:二. 集合分析迭代器首先,Iterable是所有集合的最上层,提供一个迭代器,可...原创 2019-05-21 12:04:14 · 219 阅读 · 0 评论 -
kotlin学习之解构声明(十二)
一. 解构声明的概念把一个对象成员解构成多个变量,成为解构函数,component1(),component2()等函数是Kotlin约定的操作符。解构函数可以用于:创建变量循环函数map二. 创建变量data class Person(val name: String, val age: Int)fun main(args: Array<String>) {...原创 2019-05-20 20:56:42 · 216 阅读 · 0 评论 -
kotlin之重载运算符(十一)
一. 运算符重载概念简单来说,就是Kotlin通过调用自己代码中定义特定的函数名的函数(成员函数或者扩展函数),并且用operator修饰符标记,来实现特定的语言结构比如:// 一个简单的数据类data class Foo(val x: Int, val y: Int) { operator fun plus(other: Foo) : Foo = Foo(x + other.x,...原创 2019-05-20 15:41:04 · 409 阅读 · 0 评论 -
kotlin学习之lambda(十)
Kotlin跟Java的lambda编程其实区别不大,无论是用法和写法,都比较相似,这里不详细介绍lambda表达式的用法,主要介绍一下kotlin跟java的不同之处。一. Lambda表达式介绍如果lambda表达式是函数调用的最后一个实参,那么可以把lambda表达式放在括号外面。这是经常我们能看到有两个花括号的原因。。如果lambda表达式是唯一的参数,那么连括号都可以省略如果参...原创 2019-05-09 17:24:57 · 175 阅读 · 0 评论 -
kotlin学习之对象(九)
本小结从三个角度介绍对象Object对象的声明及原理伴生对象对象表达式一. 对象的声明及原理声明object RepositoryManager{ fun method(){ println("I'm in object declaration") }}对象声明通过object引入,跟类一样包含属性、方法、初始代码块,但是唯一不同的是不拥有...原创 2019-05-09 17:24:15 · 163 阅读 · 0 评论 -
kotlin学习之数据类(七)
1. 存在的意义Kotlin的数据类相当于Java的Bean,Java的一个类都需要写getter和setter方法,代码十分臃肿,而且每次我们添加或者修改一个成员的时候,需要改相应的代码。public class JavaDemoBean { private String param1; private String param2; public String ge...原创 2019-05-09 17:23:21 · 211 阅读 · 0 评论 -
kotlin学习之嵌套类和内部类(六)
1. Java中的内部类和嵌套类//内部类,内部类持有了外部类的引用,所以在内部类中可以调用外部类的方法public class JavaOuter extends Activity { private String text = "KKK"; private void funOuter() { text = "BBB"; } class Inn...原创 2019-05-09 17:22:53 · 520 阅读 · 0 评论 -
kotlin学习之密封类(五)
密封类的意义比如,不用密封类interface FatherClassclass SonClass1: FatherClass{}class SonClass2: FatherClass{}fun check(fatherClass: FatherClass): String = when(fatherClass){ is SonClass1 ->...原创 2019-05-09 17:22:21 · 153 阅读 · 0 评论 -
kotlin学习之类的扩展(四)
Kotlin 中类的扩展方法并不是在原类的内部进行拓展,通过反编译为Java代码,可以发现,其原理是使用装饰模式,对源类实例的操作和包装,其实际相当于我们在Java中定义的工具类方法,并且该工具类方法是使用调用者为第一个参数的,然后在工具方法中操作该调用者;比如:定义一个String的扩展方法,其中的this表示调用者本身;fun String.times(t:Int){ val sb...原创 2019-05-09 17:21:31 · 148 阅读 · 0 评论 -
kotlin学习之类(三)
在看下面之前,先要知道几个概念Java的类和方法默认都是open的,而Kotlin默认的都是final的,所以要想在kotlin中定义一个可以重写的类或者方法,记得添加open。因为接口设置的方法都是待重写的属性和方法,所以默认都是open的抽象类可以理解成一半类,一半接口,只要你声明了abstrat,就说明它希望被覆盖,所以声明了abstrat的属性和方法是默认open的。只要你重写了...原创 2019-05-09 17:21:04 · 155 阅读 · 0 评论 -
kotlin学习之函数(二)
这一节主要介绍顶层函数和属性,扩展函数和属性的原理,理解它们与Java的区别,并提出局部函数的概念1. 顶层函数和属性顶层函数不属于任何类,可以理解成Java的静态函数//在Join.kt文件中package stringsfun joinToString(...): String { ... }const val UNIX_LINE_SEPARATOR = "\n"相当于Ja...原创 2019-05-09 17:20:41 · 181 阅读 · 0 评论 -
kotlin学习目录
目录kotlin学习之基础(一)kotlin学习之函数(二)kotlin学习之类(三)kotlin学习之类的扩展(四)kotlin学习之密封类(五)kotlin学习之嵌套类和内部类(六)kotlin学习之数据类(七)kotlin学习之类委托(八)kotlin学习之对象(九)kotlin学习之lambda(十)kotlin之重载运算符(十一)kotlin学习之解构声明(十二)...原创 2019-08-27 20:01:47 · 263 阅读 · 0 评论