《第一行代码》第一章第二章学习

《第一行代码》第一章第二章学习,第1张

《第一行代码》第一章第二章学习 第一章 Android系统架构:
  1. Linux内核层:提供底层驱动;
  2. 系统运行库层:提供数据库支持;
  3. 应用框架层:提供API,用于构建应用程序;、
  4. 应用层:应用程序。
Android系统开发特色: 四大组件:
  • Activity:应用显示界面都在此运行;
  • Service:后台运行,即使退出程序也在运行;
  • BroadcastReceiver:接收消息并发出消息;
  • ContentProvider:读取信息,为应用程序之间数据共享提供可能;
丰富的系统控件 SQLite数据库:

轻量级,运算速度快的嵌入式关系型数据库,支持标准的SQL语法,并可通过封装好的API让储存和读取数据变得方便

强大的多媒体 第二章: 如何独立运行kotlin代码:
  1. 使用lntelliJ IDEA直接创建konlin项目,缺点是需安装IDE工具;
  2. 在线运行代码;
  3. 使用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()函数 ⽽已。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5694598.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存