第一章:开始启程,你的第一行Android代码

1.日志工具的使用

Log.v():用于打印最为烦琐的,意义最小的日志信息。对应级别verbose,是Android日志中级别最低级的一种。

Log.d():用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比verbose高一级。

Log.i():用于打印一些重要的数据,这些数据应该是你非常想看到的,可以帮你分析用户行为的数据,对应级别info,比debug高一级。

Log.w():用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一些这些警告的地方,对应级别warn,比info高一级。

Log.e():用于打印程序中的错误信息,比如程序进入了catch语句中。当有错误信息打印出来的时候,一般代表你的程序出现严重的问题,必须尽快修复。对应级别error,比warn高一级。

第二章:探究新语言,快速kotlin入门

1.声明:var声明一个可变的变量,val声明一个不可变的变量(优先使用val来声明一个变量,当val没有办法满足需求时再使用var)

2.函数:fun 函数名(变量1:变量1类型,变量2:变量2类型 ......): 返回值类型(可选){}

3.if语句:相对于Java中的if多了一个额外的功能,可以拥有返回值,返回值就是if语句每一个条件中最后一行代码的返回值。

4.when语句:①也可以拥有返回值,when语句允许传入一个任意类型的参数,然后在when的结构体中定义一系列的条件,格式:匹配值 -> {执行逻辑}

②除了精确匹配外,when语句还可以进行类型匹配,其中is是类型匹配的核心,相当于java中的instanceof关键字。

5.for循环 ①区间 0..10表示[0,10]这个区间  0 until 10表示[0,10)

②格式for(  变量 in 区间)

6.继承 父类前加关键字open,子类就可以继承

(例:open fun Person{}  fun Student :Person())

注意①Person后面要加上(),因为Student类的主构造函数在初始化的时候会调用Person的无参构造函数,即使是无参的情况下,()不能省略;

②父类中主构造函数有参数时,子类在继承时也需要加入相应的变量名和变量类型,父类只需要有变量名,不需要变量类型。

(例:open fun Person(val name:String){}  fun Student(name:String) :Person(name))

③次构造函数用constructor关键字来定义

7.接口 接口中的函数不要求有函数体,用interface关键字声明,在类型实现接口的函数时,用override关键字进行声明

8.数据类:用于将服务器或数据库中数据映射到内存中,为编程逻辑提供数据模型的支持。在kotlin中,只需在一个类前面声明了data关键字,就表明你希望这个类是一个数据类,kotlin会根据主构造函数中的参数帮你将equals()、hashCode()、toString()等固定且无实际逻辑意义的方法自动生成。

9.集合 ①List集合:kotlin内置的listOf()函数可以简化集合的初始化写法

(例:val list = listOf("Appel","Orange","Banana"))

listOf()函数创建的是一个不可变的集合,可变集合使用mutableListOf()函数

②Set集合的用法和List集合的用法一样,不同在于Set集合中的元素无法保证有序

③Map集合:是一种键值对形式的数据结构,也可以使用mapOf()和mutableMapOf()

(例:val map = mapOf("Apple" to 1,"Orange" to 2,"Banana" to 3))

遍历(for((fruit,number) in map))

10.集合的函数式API :语法结构:{参数名1:参数类型,参数名2:参数类型 -> 函数体}

(例:val maxlengthFruit = lsit.maxBy({fruit:String -> fruit.length}))

简化:①kotlin规定,当Lambda参数是函数的最后一个参数时,可以将API表达式移到函数括号的外面

(例:val maxlengthFruit = lsit.maxBy(){fruit:String -> fruit.length})

②如果Lambda参数是函数的唯一一个参数的话,可以将函数的括号省略

(例:val maxlengthFruit = lsit.maxBy{fruit:String -> fruit.length})

③Lambda表达式的参数列表大多数情况下不必声明参数的类型

(例:val maxlengthFruit = lsit.maxBy{fruit-> fruit.length})

④当lambda表达式的参数列表只有一个参数时,也不必声明参数名,可以用it关键字来代替

(例:val maxlengthFruit = lsit.maxBy{ it.length })

11.空指针检查 ①可空类型:在类名的后面加上一个问号

{例:Int表示不可空,Int?表示可空}

②判空辅助工具:?. ?:

(例:fun getTextLength(text:String?) = text?.length ?: 0)

首先由于text是可空的,因此我们在调用它的length字段时需要使用 ?. 操作符,当text为空时,text.length会返回一个null值,这时借助 ?: 操作符让其返回0

③非空断言工具 !!,在对象的后面加上  !!,这是一种风险写法,意在告诉kotlin,我确信这里不为空,不用进行空指针检查,若出现问题,直接抛出异常,我自己承担后果。

④let函数:提供了函数式API的编程接口,将原始调用对象作为参数传递到lambda表达式中

{例:obj.let{obj2 ->  (具体的业务逻辑)}}

let函数是可以处理全局变量的判空问题

12.字符串内嵌表达式:用${},当表达式中仅有一个变量时,大括号也可以省略

{例:"Hello,${obj.name}"}   --->{"Hello,$name"}

第一行代码Android(第三版)学习第一天相关推荐

  1. 第一行代码:Android(第三版)

    阿里云盘链接:「第一行代码 - 第三版.pdf」https://www.aliyundrive.com/s/E7nKMMjfKmT 提取码: x3y3

  2. 《第一行代码 Android 第2版》下载

    <第一行代码 Android 第2版> https://pan.baidu.com/s/1B718h7h3601iEe8gIN9oAQ

  3. Kotlin 基础语法(《第一行代码(第三版)》第二章读书笔记)

    资源来自<第一行代码>(第三版)第二章 网络试读: https://www.ituring.com.cn/book/tupubarticle/30209 以下为笔记 转存失败重新上传取消正 ...

  4. 第一行代码 Android 第2版 书评

    从来没有写书评的习惯,但书实在太差,还让我花了不少时间去阅读,所以必须写一下(本人已阅读:1,2,3,4,9章). 写之前我还去看过作者的博客,单一问题的描述能力不错,但组织并写好一本书的能力基本为零 ...

  5. 《第一行代码》第三版笔记

    文章目录 第一章 1.3.5 详解项目中的资源 1.3.6 详解build.gradle文件 第二章 2.1 kotlin语言简介 2.2 如何运行kotlin代码 2.7.2 判空辅助工具 第三章 ...

  6. 温习Android基础知识——《第一行代码(第三版)》读书笔记 Chapter 2 Kotlin语法

    第二章:探究新语言,快速入门Kotlin编程 Google在2017年的I/O大会上宣布Kotlin为Android的一级开发语言,之后又在2019年的I/O大会上宣布其成为Android第一开发语言 ...

  7. 《第一行代码》第三版之通知、多媒体(十)

    本章介绍了通知及使用技巧.调用摄像头及读取相册.播放音视频.最后我们介绍了infix函数这种高级语法糖的用法. 9.1.将程序运行到手机上       没啥好讲的 9.2.使用通知       某ap ...

  8. 《第一行代码》第三版之探究Fragment(六)

    在本章,我们首先介绍了Fragment的使用方式:简单用法.FragmentManager和Transaction动态添加.返回栈防止退出.Fragment和Activity之间的信息传递.随后介绍了 ...

  9. Kotlin基本语法入门——第一行代码(第三版)笔记

    kotlin现已正式成为Android的一级开发语言.它由第三方公司JetBrains开发,代码块被编译成class文件后在Java虚拟机上运行. 它简洁.高级.安全(几乎杜绝了空指针这个全球崩溃率最 ...

  10. 第一行代码 Android读书笔记(二)

    第一行代码 Android读书笔记 第三章 软件也要拼脸蛋-UI开发的点点滴滴 常用控件的使用方法 详解4种基本布局 自定义控件 最常用和最难用的控件-ListView 更加强大的滚动控件-Recyc ...

最新文章

  1. 这是我见过最卡通的 Python 算法了,通俗易懂
  2. php curl选项列表(超详细)
  3. 2021-03-01 Matlab 多项式的根求解
  4. 怎么禁止实例化对象---2016-08-31
  5. mysql5.7.x 1251_MySql-8.0.x免安装版下载与配置,Navicat打开数据库链接报错1251的解决办法...
  6. Linux: xclip,pbcopy,xsel用法 terminal 复制粘帖 (mac , ubuntu)
  7. django-新的django项目
  8. mysql拉数据到本地_从mysql中dump数据到本地
  9. linux中代码挂上n,Linux系统常用命令nl详解(示例代码)
  10. zabbix-将业务机器加入到监控中
  11. Delphi调用C#的加密解密(Base64/AES/DES/MD5可扩充)
  12. 用c语言实现艺术清屏
  13. Python 数据结构与算法——选择排序(迭代版、递归版)
  14. egg风格 什么意思_egg框架学习笔记
  15. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-1.SpringBoot整合微信支付开发在线教育视频站点介绍...
  16. rocketmq消费
  17. 如何快速成为数据分析师?
  18. HTML5游子吟网页的完整代码,游子吟教学完整版古诗
  19. UE4_虚幻引擎4多人联机基础知识和客户端服务器通信机制详解
  20. 从零开始学前端:查找替换+进度条+随机颜色+随机选择今日任务 --- 今天你学习了吗?(JS:Day18)

热门文章

  1. ARM内核、指令集等简介
  2. (SCA)正弦余弦算法SCA: A Sine Cosine Algorithm(代码可复制粘贴)
  3. SCA工具对比分析和应用解读「超全」
  4. android 远程注入,[分享]云注入:远程注入控制器!
  5. 关于iOS录音后播放声音小的问题
  6. js写css字体,js如何写出css动画 ?js写css动画的方法(代码)
  7. VS怎么添加背景图片
  8. R语言经典模型BP神经网络
  9. 华为数通2022年10月 HCIP-Datacom-H12-821 第一章
  10. SPSS描述统计分析【003期】