- Linux内核层:提供底层驱动;
- 系统运行库层:提供数据库支持;
- 应用框架层:提供API,用于构建应用程序;、
- 应用层:应用程序。
- Activity:应用显示界面都在此运行;
- Service:后台运行,即使退出程序也在运行;
- BroadcastReceiver:接收消息并发出消息;
- ContentProvider:读取信息,为应用程序之间数据共享提供可能;
轻量级,运算速度快的嵌入式关系型数据库,支持标准的SQL语法,并可通过封装好的API让储存和读取数据变得方便
强大的多媒体 第二章: 如何独立运行kotlin代码:- 使用lntelliJ IDEA直接创建konlin项目,缺点是需安装IDE工具;
- 在线运行代码;
- 使用Android studio创建Android项目编写kotlin的main函数;变量与函数;
- 变量:定义变量只允许两种关键字:val和var
- val:用于声明一个不可变的变量,赋值后不可改变,对应Java中的final变量;
- var:声明可变变量,赋值后仍可重新赋值,对于Java的非final变量。
注:kotlin结尾不用分号
如果对变量延迟赋值,类型推导机制不可正常工作,需显示地声明变量类型
- 函数:函数是运行代码的载体;
- 定义函数的规则:首先fun是定义函数的关键字,而后是函数名(最好拥有一定的实际意义),接着紧跟一对括号,用以声明接受什么参数。
分类:顺序,条件,循环
- 条件语句:if/when;
- if条件语句:与Java的区别:可以有返回值;
- when条件语句:类似于Java中的switch语句,但功能更为强大,解决了switch语句在case后需添加break的问题;
- 使用格式:“匹配值 -> { 执⾏逻辑 }”,当执行逻辑只有一行时,{}可省略;
when语句允许类型匹配,is是类型匹配的核心
e.g checkNumber()函数是Number类型的参数,int、long、float、double都是它的子类;
若不带传入参数,需将判断表达式完整的描述,判断是否相等需使用==关键字,用以防止表达式中有相同的部分导致错误;
-
循环语句:while/for;
-
while语句和Java无区别;
-
for语句:
- 普及区间的概念:val range = 0…10表示[0, 10]这个区间
- 创建区间后可以通过for-in循环来遍历这个区间
- 创建左闭右开区间:until关键字,即val range = 0 until 10;
- 如想创建一个降序区间可以使用downTo关键字,同样是闭区间;
- for-in语句默认是递增1,若想要跳过某些元素可使用step语句,如:
-
fun main() { for (i in 0 until 10 step 2) { println(i) } }
表示递增2;
面对对象编程: 类与对象:-
创建类:右击com.example.helloworld→New→Kotlin File/Class,在d出的对话框中输⼊Person即可创建一个Person类,然后在下拉框选择Class创建类;
-
使用方法:先将事物封装成具体的类,然后将事物所拥有的属性和能⼒分别定义成类中的字段和函数,接下来对类进⾏实例化,再根据具体的编程需求调⽤类中的字段和 ⽅法即可。
-
继承和构造函数:
右击com.example.helloworld→New→Kotlin File/Class,在d出的对话框中输⼊Student,并选择创建⼀个Class, 你可以通过上下按键快速切换创建类型,但此时Student和Person无继承关系,可以使用以下两件事来使其可被继承;
- 使Person类可被继承,因为Kotlin中默认所有非抽象类都是不可被继承的,一定要由子类去继承它才可创建实例,方法:在Person前加上open关键字;
- 继承即在Student后添加一个冒号,即:
class Student : Person() { var sno = "" var grade = 0 }
为什么Person后需添加一对括号?因为其涉及主构造函数
构造函数:- 主构造函数在每个类都默认自带一个不带参数的主构造函数,其特点是无函数体,直接定义在类名后即可,如:
class Student(val sno: String, val grade: Int) : Person() { }
问:若无函数体,怎样编写一些逻辑?
答:Kotlin为我们提供了一个init结构体,逻辑都可以写在其中;
-
次构造函数:一个类只能有一个主构造函数,但可以有多个次构造函数
-
规定:当一个类既有主构造函数又有次构造函数时,所有次构造函数都必须调用主构造函数(包括间接调用),次构造函数是通过constructor关键字来定义的;
-
特例:只有次构造函数,无主构造函数:无主构造函数,次构造函数只能直接调用父类的构造函数。
-
-
继承规则:⼦类中的构造函数必须调⽤⽗类中的构造函数;
一个类最多只能继承一个父类,但可以有多个接口,创建方式:右击com.example.helloworld包→New→Kotlin File/Class,在d出的对话框中输⼊Study,创建类型选择Interface;接口与继承相同,统一使用冒号,且接口后无括号,因为其没有构造函数可调用;
函数的可见性修饰符:4种:有public、private、protected和internal,其中public是默认项,protected表示只对当前类和子类可见,internal只对同一模块的类可见;
Lambda编程: 集合的创建和遍历:传统意义上集合是List和Set,List的主要实现类是ArrayList和linkedList,Set的主要实现类是HashSet,Map的主要实现类是HashMap;
List集合:list0f()函数创建的是一个不可变的集合,不可变的集合指的是只能读取,不可添加、修改或删除 *** 作。如果想要创建一个可以读取的集合,可以使用mutableList0f()函数创建一个可变的集合,同样是for-in循环使其遍历。
Set集合:⽤法⼏乎与此⼀模⼀样,只是将创建集合的⽅式换成了setOf()和mutableSetOf()函数 ⽽已。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)