第一行代码Android(第三版)学习第一天
第一章:开始启程,你的第一行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(第三版)学习第一天相关推荐
- 第一行代码:Android(第三版)
阿里云盘链接:「第一行代码 - 第三版.pdf」https://www.aliyundrive.com/s/E7nKMMjfKmT 提取码: x3y3
- 《第一行代码 Android 第2版》下载
<第一行代码 Android 第2版> https://pan.baidu.com/s/1B718h7h3601iEe8gIN9oAQ
- Kotlin 基础语法(《第一行代码(第三版)》第二章读书笔记)
资源来自<第一行代码>(第三版)第二章 网络试读: https://www.ituring.com.cn/book/tupubarticle/30209 以下为笔记 转存失败重新上传取消正 ...
- 第一行代码 Android 第2版 书评
从来没有写书评的习惯,但书实在太差,还让我花了不少时间去阅读,所以必须写一下(本人已阅读:1,2,3,4,9章). 写之前我还去看过作者的博客,单一问题的描述能力不错,但组织并写好一本书的能力基本为零 ...
- 《第一行代码》第三版笔记
文章目录 第一章 1.3.5 详解项目中的资源 1.3.6 详解build.gradle文件 第二章 2.1 kotlin语言简介 2.2 如何运行kotlin代码 2.7.2 判空辅助工具 第三章 ...
- 温习Android基础知识——《第一行代码(第三版)》读书笔记 Chapter 2 Kotlin语法
第二章:探究新语言,快速入门Kotlin编程 Google在2017年的I/O大会上宣布Kotlin为Android的一级开发语言,之后又在2019年的I/O大会上宣布其成为Android第一开发语言 ...
- 《第一行代码》第三版之通知、多媒体(十)
本章介绍了通知及使用技巧.调用摄像头及读取相册.播放音视频.最后我们介绍了infix函数这种高级语法糖的用法. 9.1.将程序运行到手机上 没啥好讲的 9.2.使用通知 某ap ...
- 《第一行代码》第三版之探究Fragment(六)
在本章,我们首先介绍了Fragment的使用方式:简单用法.FragmentManager和Transaction动态添加.返回栈防止退出.Fragment和Activity之间的信息传递.随后介绍了 ...
- Kotlin基本语法入门——第一行代码(第三版)笔记
kotlin现已正式成为Android的一级开发语言.它由第三方公司JetBrains开发,代码块被编译成class文件后在Java虚拟机上运行. 它简洁.高级.安全(几乎杜绝了空指针这个全球崩溃率最 ...
- 第一行代码 Android读书笔记(二)
第一行代码 Android读书笔记 第三章 软件也要拼脸蛋-UI开发的点点滴滴 常用控件的使用方法 详解4种基本布局 自定义控件 最常用和最难用的控件-ListView 更加强大的滚动控件-Recyc ...
最新文章
- 这是我见过最卡通的 Python 算法了,通俗易懂
- php curl选项列表(超详细)
- 2021-03-01 Matlab 多项式的根求解
- 怎么禁止实例化对象---2016-08-31
- mysql5.7.x 1251_MySql-8.0.x免安装版下载与配置,Navicat打开数据库链接报错1251的解决办法...
- Linux: xclip,pbcopy,xsel用法 terminal 复制粘帖 (mac , ubuntu)
- django-新的django项目
- mysql拉数据到本地_从mysql中dump数据到本地
- linux中代码挂上n,Linux系统常用命令nl详解(示例代码)
- zabbix-将业务机器加入到监控中
- Delphi调用C#的加密解密(Base64/AES/DES/MD5可扩充)
- 用c语言实现艺术清屏
- Python 数据结构与算法——选择排序(迭代版、递归版)
- egg风格 什么意思_egg框架学习笔记
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-1.SpringBoot整合微信支付开发在线教育视频站点介绍...
- rocketmq消费
- 如何快速成为数据分析师?
- HTML5游子吟网页的完整代码,游子吟教学完整版古诗
- UE4_虚幻引擎4多人联机基础知识和客户端服务器通信机制详解
- 从零开始学前端:查找替换+进度条+随机颜色+随机选择今日任务 --- 今天你学习了吗?(JS:Day18)