Android Studio上Kotlin的入门,移动应用系统开发
Kotlin入门
- 为什么选择Kotlin
- Kotlin是什么
Kotlin的优势
第一个Kotlin应用
Kotlin的基本语法规则
- 变量
函数
匿名函数
字符串模板
注释
Null 安全
类型检测和自动类型转换
简化Toast的用法
为什么选择Kotlin
在 2019 年 Google I/O 大会上,他们宣布今后将优先采用 Kotlin 进行 Android 开发。如今,超过 60 款 Google 应用是用 Kotlin 构建的,其中包括 Google 地图、Google Home、Google Play 和 Google 云端硬盘等应用。根据 Google 的说法,Google Play 商店前 1000 个应用中有 60% 以上也使用 Kotlin。Kotlin是谷歌在安卓应用上大力支持且推荐的语言,在构建新的 Android 开发工具和内容(例如 Jetpack 库、示例、文档和培训内容)时,谷歌会在设计层面上先考虑 Kotlin 用户。
Kotlin是什么
Kotlin是由JetBrains公司开发设计的一门解释性语言,在2011年,JetBrains公布了Kotlin的第一个版本,并在2012年将其开源。2016年,Kotlin发布了1.0正式版,JetBrains在自家的旗舰开发工具IntelliJ IDEA中加入了对Kotlin的全面支持,Kotlin在这时期,已经足够成熟和稳定了。2017年,Android Studio也加入了对Kotlin的支持。
Kotlin的优势
代码更少、可读性更强 可以让我们写更少的代码,以及花费更少的时间来理解别人的代码;
更安全的代码 Kotlin 有许多语言功能,可帮助我们避免 null 指针异常等常见编程错误;
与 Java 的互操作性 可以在 Kotlin 代码中调用 Java 代码,或者在 Java 代码中调用 Kotlin 代码。对于原有的java项目,在应用程序中可以将 Kotlin 与 Java 编程语言一起使用, 而无需将所有代码迁移到 Kotlin;
Android Jetpack 与其他库中的 Kotlin 支持 KTX 扩展 为现有的 Android 库添加了 Kotlin 语言特性,如协程、扩展函数、lambdas 与命名参数;
5.易学易用 Kotlin 非常易于学习,尤其是对于 Java 开发人员而言。
第一个Kotlin应用
知道了Kotlin是什么,那我们就先用Android Studio来创建你的第一个Kotlin应用吧
创建Kotlin应用很简单,所有的步骤都和创建Java应用是一样的,只需在创建时,将所使用的语言改为Kotlin就行
创好了后,我们打开MainActivity,可以看到,比起java,Kotlin的代码要少一些,写类和方法的语法规则也不同。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
Kotlin的基本语法规则
_Kotlin每一行代码的结尾是不用加
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
分号的_
变量
在Kotlin中定义变量的方式和java区别很大,Kotlin定义变量时,只允许在变量前声明两种关键词:val 和 var
val(value的缩写),它用来声明一个不可变的变量。这种变量在初始初始赋值之后,就不能再被复制了,相当于java中用 final声明。
var(variable的缩写),它用来声明一个可变的变量。这种变量在初始赋值之后依旧可以重新赋值。
常量与变量都可以没有初始化值,但是在引用前必须初始化
编译器支持自动类型判断,即声明时可以不指定类型,由编译器判断。
val x: Int = 10 //完整的声明变量
val y = 10 // 不指定变量类型,系统自动推断变量类型为Int
val z: Int // 如果不在声明时初始化值,则必须提供变量类型
z = 10 //对不可变的变量明确赋值,赋值后不能再次赋值
var a = 1 // 系统自动推断变量类型为Int
a += 1 // 变量可修改
读者可以看到,Kotlin中Int的首字母是大写的,而Java中int的首字母是小写的。这是因为Kotlin没有使用Java的基本数据类型,而是使用了对象数据类型。在java中,int是关键字,而在Kotlin中,Int是一个类,它有自己的方法和数据结构。所以,我们可以给Int等对象数据类型添加扩展函数,文章后文的Toast简化就是基于此点的。
函数
Kotlin中定义函数的关键字是fun(function的缩写),无论你想定义什么函数,都必须用fun进行声明
紧跟在fun后面的是函数名,函数名后括号里面放的是接收的参数。参数的格式名是“参数名:参数类型”
若是有返回值的话,就将返回值类型以冒号隔开,写在函数名括号的后面;若是没有返回值,可以省略不写,或者写关键字为 Unit,类似与java的void
实例:接收两个不同类型参数,且返回值为String的函数
fun functionDemo(parm1 : Int, parm2 : String) : String{
return parm2
}
实例:当一个函数中只有一行代码时,Kotlin允许我们不必编写函数体,可以直接将唯一的一行代码用等号连接,直接写在函数定义的后面
//改写前
fun sum(parm1: Int, parm2: Int): Int {
return a + b
}
//改写后
fun sum(parm1: Int, parm2: Int) = a + b //返回值类似也省略了,由编译器自动推断类型
匿名函数
Kotlin支持lambda表达式。并非每个函数都需要一个名称。某些函数通过输入和输出更直接地进行标识。这些函数称为“匿名函数”。
lambda表达式的写法为:(type1,type*) -> type_return = { }
使用实例:
fun main(args: Array) {
val sumLambda: (Int, Int) -> Int = {x,y -> x+y} //(Int, Int) -> Int = {x,y -> x+y}就是一个匿名函数
println(sumLambda(1,2)) // 输出 3
}
字符串模板
字符串可以包含模板表达式,即可求值的代码片段,并将它的结果连接到字符串里面。
字符串模板表达式可以是 $变量名 ${变量名}
实例:
val a = 10
val s1 = “a = $a” // 结果为 “a = 10”
val s = “abc”
val str = “$s.length is ${s.length}” // 结果为 “abc.length is 3”
a = 2
// 模板中的任意表达式:
val s2 = “${s1.replace(“is”, “was”)}, but now is $a”
//结果为“a was 10 , but now is 2 ”
var name = “张三”
var sex = true
var date = “2021年1月2日”
var time = “11点59分”
var work =“该睡觉了”
val orderInfo = “你好,${name} if(sex)"coolboy"else"coolgirl","+"现在已经是{if(sex)"cool boy" else "cool girl" },"+"现在已经是if(sex)"coolboy"else"coolgirl","+"现在已经是{date}\ttime了,"+"你{time}了,"+"你time了,"+"你{cacke}”
//结果为"你好,张三 cool boy,现在已经是2021年1月2日 11点59分了,你该睡觉了"
注释
Kotlin 支持单行(或行末)与多行(块)注释。
// 这是一个行注释
/* 这是一个多行的
块注释。 */
Kotlin 中的块注释可以嵌套
/* 注释从这里开始
/* 这是嵌套的注释 */
并且在这里结束。 */
Null 安全
在某些语言中,可以声明引用类型变量而不明确提供初始值。在这类情况下,变量通常包含 null 值。默认情况下,Kotlin 变量不能持有 null 值。这意味着以下代码段无效:
// 赋值失败
val languageName: String = null
要使变量持有 null 值,它必须是可为 null 类型。可以在变量类型后面加上 ? 后缀,将变量指定为可为 null,如以下示例所示:
val languageName: String? = null
当使用可以可返回Null的函数时,要注意Null安全,应该先做判断处理
fun printProduct(arg1: String, arg2: String) {
val x = parseInt(arg1)
Android Studio上Kotlin的入门,移动应用系统开发相关推荐
- Android Studio和Kotlin入门
Welcome to the series of tutorials on Android Development with Kotlin. This series is designed with ...
- 在Android Studio上进行OpenCV 3.1开发
在Android Studio上进行OpenCV 3.1开发 发布于 2016年1月27日 作者: John Hany 5,466次阅读 2016.07.08更新:增加Android Studio 2 ...
- android studio查看字节码,使用Android studio查看Kotlin的字节码教程
Kotlin是一门JVM语言,它被google大力推广,现如今已经是Android官方推荐的开发语言了.为了更好的学习Kotlin,你必须要从字节码的角度来看待语法特点,这样可以更好的加深自己的理解. ...
- Android Studio 上传代码到Gitee
最近在学校里做Android的项目,一直不会通过Android Studio上传代码到Gitee,经过查阅博客和文章,现在将方法总结如下: 一.安装Git 1.下载Git 可在Git官网下载 http ...
- Android Studio上方便使用butterknife注解框架的偷懒插件Android Butterknife Zelezny
首先提下ButterKnifey已经更新到版本7.0.1了,现在注解已经不叫@InjectView了,而叫@Bind,感觉更贴合语义.同时注册的方式也从 ButterKnife.inject(this ...
- Android Studio上调试手机数据库(SQLite)
在 Eclipse 时代,调试 SQLite 大都是在DDMS中,data/data/目录下找到db将数据库文件,将文件导出到电脑,然后再用软件打开查看.现在在 Android Studio,是不是可 ...
- 【Android开发】Android Studio中进行简单的WebView构建浏览器开发1
[Android开发]Android Studio中进行简单的WebView构建浏览器开发 第一步:新建一个Android Project 第二步:修改AndroidMainfest.xml文件 第三 ...
- 【Android开发】Android Studio中进行简单的WebView构建浏览器开发2
[[Android开发]Android Studio中进行简单的WebView构建浏览器开发2 第1步:在上一篇博客的基础上,修改activity_main.xml 第2步:在MainActivity ...
- 基于Android Studio的蓝牙通信的简单应用与开发
实现基于Android Studio的蓝牙通信的简单应用与开发 实现蓝牙通信 界面展示 核心文件 部分代码展示 总结 实现蓝牙通信 通过权限申请与代码实现,完成蓝牙通信的简单应用与开发. 界面展示 核 ...
最新文章
- 静茹docker容器的几种方法_Docker介绍及使用
- VirtualBox uuid冲突问题
- Ironic 裸金属管理服务的底层技术支撑
- Spring事务嵌套引发的问题--Transaction rolled back because it has been marked as rollback-only...
- 众志成城 共克时艰 TigerGraph免费开放企业级版本授权全力支持疫情防控
- 2012总结--第10篇--工作篇
- ad18常用快捷键可以修改吗_常用发泡剂之聚氨酯发泡剂在冬季可以用吗?
- MySQL-快速入门(14)MySQL性能优化
- 【机械仿真】基于matlab GUI智能电梯仿真系统【含Matlab源码 1087期】
- wingdings字体符号在哪_wingdings2字体
- 制作U盘启动时的写入模式HDD-FAT32、ZIP-FAT32、HDD-FAT16、ZIP-FAT16有什么区别?
- matlab2016 dll,VS2012Matlab2016b dll文件混合编
- 51nod 2589 快速讨伐
- 7-9 部落 (25分)
- ElementUI el-table合并单元格
- 【机器学习】(十七)非负矩阵分解NMF:人脸图像特征提取、用特征排序;还原混合信号
- pandas:世界各国GDP数据集数据清洗案例
- 利用OpenCV计算图像的垂直和水平积分投影
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- ICMP控制报文协议
热门文章
- Kubernetes 污点与容忍
- python报错:SyntaxError: Missing parentheses in call to ‘exec‘
- zynq学习笔记之petalinux (1)安装Ubuntu16.04.1
- php中文的正则表达式_php汉字正则表达式
- 干货:怎么样才能提升版式平面设计的大方美观?
- qt中如何模拟按钮点击_Qt 实现按钮点击切换按钮图片
- Windows/Linux内核地址空间管理的异同
- shopee首站入驻哪个国家?哪个国家更好卖?
- P2-前端基础-网页中的实体(转义字符)
- 推荐一些亲测实用的小软件