《Kotlin核心编程》热身篇——Kotlin基础内容总结

Android天气应用开发指南:从环境搭建到架构设计 在移动应用开发领域,网络请求、数据解析与UI绘制是构建现代App的核心技术栈。其原理在于通过HTTP客户端与服务器交互获取数据,并利用异步编程模型处理耗时操作,确保界面流畅。这些技术的工程价值在于提升开发效率、保障应用性能与可维护性。在天气查询、新闻阅读等数据驱动型应用场景中,合理运用架构模式与工具链尤为关键。本文以构建一个Android天气应用为例,详细讲解如何结合Kotlin协程进行异步处理,并利用Retrofit高效管理网络请求,为开发者提供从零开始的完整项目实践路径。 阅读详情

1 Kotlin设计哲学

  1. 目标:更好的Java
  2. 编程方式:面向对象命令式编程+函数式编程(Scala有包括宏)
  3. 一些改良:单例模式,data数据类,NPE,可变性,更多的语法糖,类型推导

2 Kotlin基础语法

2.1 类型声明

  1. 类型声明:类型名放在后面
  2. 方法返回值类型,是否需要显示类型声明:表达式函数体(单行表达式与等号),代码块函数体。需要进行显示类型声明的情况:a、是函数的参数;b、是非表达式定义的函数,返回Unit时可不需显示声明;c、是一个递归的函数;d、公有方法的返回值时,建议显示声明,为了更好的代码可读性及输出类型的可控性。

2.2 var和val

  1. var:varible(变量)
  2. val:varible+final 或者value(值),声明的变量是只读变量,引用不可改变,但引用的对象可以改变。
  3. Kotlin开发原则:优先使用val来声明变量。尽可能采用val、不可变对象及纯函数来设计程序。纯函数:就是没有副作用(就是修改了某处的某些东西)的函数,具备引用透明性。
  4. 使用val声明变量的优势:a、这是一种防御性的编码思维模式,更加安全和可靠,因为变量的值不会被修改(反射技术除外);b、不可变的变量使得程序更容易推理,越是复杂的业务逻辑,优势越大。
  5. 使用var声明变量的优势:a、相比其他实现方式,var有更好的性能,占用内存更少,可以让程序显得直接、易于理解;b、针对于数据结构,可能需要存储大量数据,var更合适。

2.3 高阶函数和Lambda

  1. 函数式语言:函数是头等公民。a、可以在顶层直接定义一个函数;b、可以在函数内部定义一个局部函数;c、可以直接将函数像普通变量一样传递给另一个函数;d、在其他函数内被返回。
  2. 高阶函数:以其他函数作为参数或返回值的函数。它是一种更加高级的抽象机制,极大增强了语言的表达能力。

2.3.1 函数做参数

  1. 函数类型的格式: (Int) -> Unit 。a、通过 -> 符号来组织参数类型和返回值类型,左边是参数类型,右边是返回值类型;b、必须用一个括号来包裹参数类型;c、返回值类型即使是Unit,也必须显示声明。——接收函数
  2. 方法引用:通过 :: 实现对于某个类的方法进行引用。——传入函数
  3. 匿名函数:没有函数名字,传入函数时直接将匿名函数放在需要传入函数的位置。
  4. Lambda表达式:a、一个Lambda表达式必须通过 {} 来包裹;b、如果Lambda声明了参数部分的类型,且返回值类型支持类型推导,那么Lambda变量就可以省略函数类型声明;c、如果Lambda变量声明了函数类型,那么Lambda的参数部分的类型就可以省略;d、如果Lambda表达式返回的不是Unit,那么默认最后一行表达式的值类型就是返回值类型。
  5. fun:a、fun在没有等号、只有花括号的情况下,就是最常见的代码块函数体,如果返回非Unit值,必须带retrun;b、fun带有等号,是单表达式函数体,可以省略return;c、如果是等号+花括号,那么不管是用val还是fun,就是Lambda表达式,Lambda的参数在花括号内部声明。如果左侧是fun,必须通过 () 或invoke来调用Lambda。
  6. 闭包:闭包就是访问外部环境变量的函数。a、闭包是函数;b、闭包能够访问外部环境变量,也能对其进行修改;c、Lambda表达式、匿名函数、函数内部的函数条件语句等都可以理解为闭包

2.3.2 函数做返回值

        柯里化:类似“击鼓传花”游戏,是函数作为返回值的一种典型应用,是为了解决多参数的问题(Lambda演算是函数式语言的基础,然而它要求所有函数都只能接收最多一个参数)。

        大部分场景下,可以用函数作为返回值来代替柯里化的方案。Kotlin中语法糖的存在,使得很少使用柯里化技术。

2.4 面向表达式编程

  1. 表达式和语句:表达式是可以返回值的语句。包括:1;-1;1+1;listOf(1,2,3),lambda表达式;匿名函数表达式和ifelse表达式等。
  2. Unit:Unit类型让函数调用皆为表达式,引入Unit是为替代Java中的void关键字。
  3. 表达式:表达式比语句更安全,杜绝了副作用;有更好的表达能力。
  4. ?:——Kotlin中没有采用三元运算符,这个叫Elvis运算符,用来给一种可空类型的变量指定为空情况下的值。
  5. when表达式:可优化ifelse,类似switch语句
  6. for循环:for(i in 1..10)
  7. 范围表达式:.. 顺序/downTo 倒序/step 步长/until 包左不包右 ;eg:for(i in 10 downTo 1 step 2);for(i in 1 until 10)
  8. in:用来检查一个元素是否是一个区间或集合中的成员。
  9. 中缀表达式:不好理解,更像自然语言。

2.5 字符串的定义和操作

  1. 定义原生字符串:"""。用3个引号定义的字符串,最终的打印格式与代码中所呈现的格式一致。
  2. 字符串模版:${变量}。也可以把表达式通过这种方式插入字符串,如:"Kotlin has ${if("Kotlin".length > 0) "Kotlin".length else "no"} letters. ==> Kotlin has 6 letters.
  3. 字符串判等:== 判断对象内容是否相等;=== 判断对象的引用是否相等。对于原始类型,==与===无差别。
Kotlin实战项目:简易计算器开发全流程 回过头来看,我们做的不只是一个计算器,而是一次完整的工程实践训练:学会了如何搭建 Kotlin 开发环境;掌握了类设计、构造函数、属性封装等 OOP 技巧;深入理解了空安全、异常处理、输入验证等健壮性保障手段;实践了 View Binding、事件监听、UI 更新等 Android 开发核心技能;更重要的是——我们学会了用工程师思维去思考问题:不仅要“能用”,还要“好用”、“可靠”、“易于维护”。 阅读详情

相关推荐

kotlin 语言基础学习《PDF文档》

kotlin 语言基础学习《PDF文档》 本资料围绕kotlin 前提、kotlin 基础知识、kotlin进阶知识等方面阐述kotlin 语言基础学习。

Kotlin编程(总)

​ 去年,读完了《Kotlin核心编程》和《Kotlin官网指南》,较为凝练的整理了一些笔记,对于初学Kotlin的同学可能有所帮助,对于自己也是一份积累和沉淀,汇总于此。

云瀚的自习室 822

Golang实战:用Quic-Go v0.46.0搭建高性能文件传输服务(附完整代码)

本文详细介绍了如何使用Golang和Quic-Go v0.46.0构建高性能文件传输服务,涵盖服务端和客户端的完整实现。通过QUIC协议的多路复用、零RTT连接等特性,显著提升文件传输效率,特别适合高延迟或不稳定网络环境。文章提供完整代码示例和性能调优技巧,帮助开发者快速部署高效的文件传输解决方案。

weixin_33737134的博客 451

Kotlin核心编程 下水篇:kotlin核心(第8章)

(1)元编程(2)Kotlin反射(3)注解(4)注解处理器

l141930402的博客 932

别再到处找模板了!我用这套软著申请材料(含用户手册+源代码模板)两个月搞定

本文提供了一套高效的软著申请材料模板,包括用户手册和源代码模板,帮助开发者两个月内快速完成申请。通过实战指南和常见误区解析,详细介绍了材料准备的规范与技巧,确保格式合规性,大幅提升审核通过率。

weixin_29268637的博客 549

vfsglobal预约系统登录问题全解析(by quqi99)

本文全面解析VFS Global预约系统登录常见问题,包括IP限制、验证码验证失败及账号自动删除等。提供详细的解决方案,如DNS配置、浏览器设置及邮箱选择建议,帮助用户顺利完成签证预约。特别针对中国用户遇到的IP限制问题,给出了实用技巧。

gamma的博客 1341

Kotlin核心编程 遨游篇:kotlin实战(第13章)

(1)响应式编程(2)Spring 5支持响应式编程(3)异步非阻塞MySQL数据库驱动(4)Spring Webflux+Kotlin示例

l141930402的博客 1054

Wireshark抓包分析:如何从HTTP流量中快速定位黑客攻击痕迹(附pcap文件)

本文通过Wireshark实战,详细解析了如何从HTTP流量中快速定位黑客攻击痕迹。文章提供了核心过滤策略,并重点剖析了如何识别SQL注入攻击的流量特征、揭露WebShell的隐蔽通信以及追踪攻击者在横向移动中的行为,帮助安全人员系统性地从pcap文件中还原完整攻击链。

sprite的博客 1009

Kotlin核心编程 潜入篇:kotlin探索(第11章)

(1)同步异步与阻塞非阻塞(2)异步非阻塞能够提高效率(3)多线程不一定优于单线程(4)协程可以看成是一个轻量级的线程(5)launch与runBlocking(6)async和await(7)并发线程安全问题(8)Actor(9)CQRS架构(10)Kotlin with PersistentActor

l141930402的博客 1086

SAP S/4 FICO科目辅助余额表开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP S/4 FICO科目辅助余额表开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

我好像病了的博客 329

SAP SD销售订单的ATP检查简介

如果可用性检查组设置为01(汇总需求),系统将更新销售订单需求到汇总表VBBS,该表中未记录销售订单号码,因此在MD04中不会显示销售订单号码,而是按天汇总显示销售需求。如果物料的可用性检查组设置为02(单个需求),系统将更新销售订单需求到表VBBE,该表中记录了销售订单号码,因此在MD04显示销售订单的号码以及需求,前面的文章中我们解释了PP模块中的ATP检查,也解释了MM模块中的ATP的检查,本文将说明一下SD模块中的ATP检查。可用性检查用的最多的就是02,有兴趣的同学可以测试一下可用性检查01。

我小时候很黑的博客 4297

Kotlin核心编程 下水篇:kotlin核心(第6章)

(1)Lambda简化表达(2)集合API(3)可变集合与只读集合(4)惰性集合(5)中间操作与末端操作(6)内联函数

l141930402的博客 1174

请尽可能地详细说明一个VLA项目的立项训练到落地的全流程

一个机器人VLA项目的全流程是一个复杂的系统工程,它深度融合了机器人学 (Robotics)计算机视觉 (CV)和自然语言处理 (NLP)。其核心挑战在于高质量数据的获取和从仿真到现实的有效迁移。与纯粹的软件AI项目相比,它增加了硬件、物理交互和安全性的维度,但其最终能让AI走出虚拟世界、在物理世界中产生实际价值,这也是其巨大的魅力所在。

具身机器人和通用AI 303

Kotlin核心编程 热身篇:kotlin基础(1,2章)

(1)类型推导(2)变量声明(3)函数声明(4)高阶函数(5)Lambda表达式(6)表达式和流程控制(7)字符串操作

l141930402的博客 1350

SAP 打印输出中 `#` 字符替代日文汉字的根本原因与全面解决方案

只要认清设备类型 / 字符集 / 字体三角关系,并合理利用PDFUCSWINCF或 UPE + URDT,LP01里那些恼人的就会彻底消失,日文汉字将在纸面与 PDF 中如预览一样完美呈现。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 816

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

新书推荐 |《Kotlin核心编程》

新书推荐《Kotlin核心编程》长按二维码了解及购买水滴团队出品,Quill核心贡献者执笔,从5个维度深入讲解Kotlin的设计理念、设计哲学、语法、核心特性、设计模式、函数式编程、异步...

华章IT官方博客 445

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

kotlin热身

https://developer.android.google.cn/kotlin/learn 1 继承 : xxx() 为什么有些不用写() overide 下移到定义方法最前面 不用写 权限修饰词了如public private protect eg: class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(saved

活着就是应该在解放自我 243

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Dive Into Kotlin(一):初探 Kotlin

本文由 Prefert 发表在 ScalaCool 团队博客。 在今年的 Google I/O 大会上,Google 宣布在 Android 上为 Kotlin 提供一等支持(转为正房)。 在 Andorid 开发的圈子中,这无疑掀起了轩然大浪。对部分人来说,也许这是第一次听到 Kotlin 。事实上,在 2011 年 7 月,JetBrains 就推出 Kotlin 项目,直到去年 2 月 Ko...

weixin_34185320的博客 244

干货 | 携程机票 Android Jetpack 与 Kotlin Coroutines 实践

作者简介禹昂,携程机票移动端资深工程师,Kotlin 中文社区核心成员,图书《Kotlin 编程实践》译者。一、前言 1.1 技术背景与选型自 2017年 Google IO 大会...

携程技术 679

运动记录与热量消耗分析 - Kotlin KMP鸿蒙工具

运动记录与热量分析工具 本案例展示了一个基于Kotlin Multiplatform的健康评估工具,核心功能包括: 运动时长分析:统计总时长、平均时长、最长/最短运动时间 热量消耗估算:基于MET模型计算消耗热量 运动结构评估:分析运动强度分布并提供建议 技术实现特点: 使用Kotlin/JS将业务逻辑编译为JavaScript模块 通过@JsExport注解实现ArkTS页面调用 采用响应式UI设计,支持实时交互分析 该工具可扩展为完整的生活健康组件集,同一份Kotlin代码可服务多端应用。

2402_89706816的博客 859

携程机票 Android Jetpack 与 Kotlin Coroutines 实践 | 开发者说·DTalk

本文原作者: 禹昂,携程机票移动端资深工程师,Kotlin 中文社区核心成员,图书《Kotlin 编程实践》译者。原文发布于: 携程技术https://mp.weixin.qq.com/...

谷歌开发者 1577

函数式编程:Lambda 表达式:Compose 的核心。比如 { onClick() },请直接给出一些练习事例出来

如果你手头有 Android Studio,直接把这段代码贴到 Compose 的 setContent 里:// 这是一个标准的 Compose 写法// 1. Column 使用了尾随 Lambda// 2. Button 使用了尾随 Lambda (onClick)// 3. Text 是普通函数调用Column { // 尾随 Lambda 开始Text("欢迎来到 Compose")Button(onClick = { /* Lambda 内部 */

hnlgzb的专栏 355

编程语言性能、类型系统与并发模型深度对比

编程语言的性能优化、类型系统和并发模型是现代软件开发的核心考量因素。从执行速度、内存效率到并发能力,不同语言在这些维度上展现出独特优势。Go凭借轻量级goroutine和高效GC在微服务领域表现突出,Rust则通过所有权系统实现内存安全与零成本抽象。类型系统方面,静态类型语言如Java和Kotlin能显著减少运行时错误,而Python的类型提示则为动态语言提供了渐进式类型化方案。并发模型上,从Go的CSP到Rust的异步IO,各语言提供了多样化的解决方案。理解这些底层原理,能帮助开发者根据应用场景(如云原生

weixin_34319111的博客 344

正则表达式基础,kotlin操作符重载

可匹配的数字:0,1,5,6,7 匹配非数字字符: 正则表达式:”\D” 或者 “[^0-9]” 或者 “[^\d]” 匹配字串:非数字字符(切记:也是匹配一个字符)。 如上三个正则表达式的匹配效果是一样的,都是匹配一个非数字字符。”[]”中的””就是取反,除去””后面的内容。 匹配单词和非单词字符: 首先强调一点,匹配的是单词和非单词的字符,不是单词!!! “\w” 这个简写式将匹配所有单词字符(字母、数字、下划线)。 “\D” 匹配非数字字符,包含空格、标点(引号、连字符、反斜杠、方括弧)等字符。 在英

m0_65321095的博客 1132

简单谈谈编程语言(外篇)

本文是前三篇文章的外篇,主要讲讲我从C到C的编程语言之路,从上层应用到较底层开发,目前主攻C语言嵌入式开发。本文本来预想是两个星期前写的,但由于热身赛临近,需要投入大量的时间,所以迟迟抽不出时间来,加上熬夜太多,一直咳嗽,今天算是有时间结束《简单谈谈编程语言》系列了。 第一篇适合刚接触多种语言的程序员,第二篇适合已经一定的框架、应用开发经验的程序员,第三篇适合有较多开发经验、并且还没做出选...

qq_19257541的博客 9146

Robocode比赛组织指南:如何举办一场成功的编程机器人竞赛 [特殊字符]

想要组织一场激动人心的Robocode编程机器人竞赛吗?作为一款经典的编程对战游戏,Robocode不仅能让参与者提升编程技能,还能通过竞技比赛激发创造力。本文将为你提供完整的**Robocode比赛组织指南**,帮助你从零开始策划并执行一场成功的机器人对战比赛。无论你是教师、活动组织者还是编程爱好者,这份指南都将为你提供实用的组织策略和技巧。 ## 🤖 什么是Robocode编程游戏? R

gitblog_00618的博客 756
上一篇: 2022年Android中高级面试框架
下一篇: Android业务开发中assert的使用
Swuagg
Swuagg 新星创作者: 移动开发技术领域 新星创作者: 移动开发技术领域 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄10年 2355粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值