kotlin的学习记录
kotlin的学习记录
- 前言
- 一、Kotlin是什么?
- 二、学习引入
- 1.第一个Kotlin程序
- 2.基本语法
- 三、Kotlin 基本数据类型
- 1. Kotlin 的基本数值类型包括
- 2.比较
- 3. 类型转换
- 4. 位操作符
- 5. 字符
- 6. 布尔
- 7. 数组
- 8.字符串
- 四、Kotlin 条件控制
- 总结
前言
我之前是兴趣使然,因为接触到了移动开发(Android),用的是Java,现在也是想与时俱进。
一、Kotlin是什么?
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
特点:
- 简洁: 大大减少样板代码的数量。
- 安全: 避免空指针异常等整个类的错误。
- 互操作性: 充分利用 JVM、Android 和浏览器的现有库。
- 工具友好: 可用任何 Java IDE 或者使用命令行构建。
Kotlin 程序文件以 .kt为后缀名
二、学习引入
1.第一个Kotlin程序
代码如下(示例):
package hello // 可选的包头
fun main(args: Array<String>) { // 包级可见的函数,接受一个字符串数组作为参数println("Hello World!") // 分号可以省略,换行print("Hello World!") //不换行
}
2.基本语法
函数定义 :使用关键字 fun,参数格式为:参数 : 类型
定义常量与变量: 可变变量定义:var 关键字 不可变变量定义:val 关键字
注释: // 这是一个单行注释 /* 这是一个多行的 块注释。 */
字符串模板
NULL检查机制
Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理区间
区间表达式由具有操作符形式 … 的 rangeTo 函数辅以 in 和 !in 形成。
//1.函数定义fun sum(a: Int, b: Int): Int { // Int 参数,返回值 Intreturn a + b}//表达式作为函数体,返回类型自动推断:fun sum(a: Int, b: Int) = a + b public fun sum(a: Int, b: Int): Int = a + b // public 方法则必须明确写出返回类型 //无返回值的函数(类似Java中的void):fun printSum(a: Int, b: Int): Unit { print(a + b)} // 如果是返回 Unit类型,则可以省略(对于public方法也是这样):public fun printSum(a: Int, b: Int) { print(a + b)}//函数的变长参数可以用 vararg 关键字进行标识: fun vars(vararg v:Int){for(vt in v){print(vt)}} // 测试fun main(args: Array<String>) {vars(1,2,3,4,5) // 输出12345}//lambda(匿名函数)表达式使用实例: fun main(args: Array<String>) {val sumLambda: (Int, Int) -> Int = {x,y -> x+y}println(sumLambda(1,2)) // 输出 3}//4.字符串模块//$ 表示一个变量名或者变量值//$varName 表示变量值 //${varName.fun()} 表示变量的方法返回值: var a = 1// 模板中的简单名称:val s1 = "a is $a" a = 2// 模板中的任意表达式:val s2 = "${s1.replace("is", "was")}, but now is $a"// 5. NULL检查机制//类型后面加?表示可为空var age: String? = "23" //抛出空指针异常val ages = age!!.toInt()//不做处理返回 nullval ages1 = age?.toInt()//age为空返回-1val ages2 = age?.toInt() ?: -1//当一个引用可能为 null 值时, 对应的类型声明必须明确地标记为可为 null。//当 str 中的字符串内容不是一个整数时, 返回 null:fun parseInt(str: String): Int? {// ...}//6.区间for (i in 1..4) print(i) // 输出“1234for (i in 4..1) print(i) // 什么都不输出if (i in 1..10) { // 等同于 1 <= i && i <= 10println(i)}// 使用 step 指定步长for (i in 1..4 step 2) print(i) // 输出“13”for (i in 4 downTo 1 step 2) print(i) // 输出“42”// 使用 until 函数排除结束元素for (i in 1 until 10) { // i in [1, 10) 排除了 10println(i)
该处使用的url网络请求的数据。
三、Kotlin 基本数据类型
1. Kotlin 的基本数值类型包括
Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。
2.比较
在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。
3. 类型转换
// 3. 类型转换
//每种数据类型都有下面的这些方法,可以转化为其它的类型:toByte(): BytetoShort(): ShorttoInt(): InttoLong(): LongtoFloat(): FloattoDouble(): DoubletoChar(): Char
4. 位操作符
//4.位操作符
//对于Int和Long类型,还有一系列的位操作符可以使用,分别是:shl(bits) – 左移位 (Java’s <<)shr(bits) – 右移位 (Java’s >>)ushr(bits) – 无符号右移位 (Java’s >>>)and(bits) – 与or(bits) – 或xor(bits) – 异或inv() – 反向
5. 字符
和 Java 不一样,Kotlin 中的 Char 不能直接和数字操作,Char 必需是单引号 ’ 包含起来的。比如普通字符 ‘0’,‘a’。
6. 布尔
Boolean :true 和 false。若需要可空引用布尔会被装箱。
内置的布尔运算有:|| – 短路逻辑或 && – 短路逻辑与 ! - 逻辑非
7. 数组
数组用类 Array 实现,并且还有一个 size 属性及 get 和 set 方法,由于使用 [] 重载了 get 和 set 方法,所以我们可以通过下标很方便的获取或者设置数组对应位置的值。
数组的创建两种方式:一种是使用函数arrayOf();另外一种是使用工厂函数。如下所示,我们分别是两种方式创建了两个数组:
//7.数组
fun main(args: Array<String>) {//[1,2,3]val a = arrayOf(1, 2, 3)//[0,2,4]val b = Array(3, { i -> (i * 2) })//读取数组内容println(a[0]) // 输出结果:1println(b[1]) // 输出结果:2
}
//如上所述,[] 运算符代表调用成员函数 get() 和 set()。
//注意: 与 Java 不同的是,Kotlin 中数组是不协变的(invariant)。
//除了类Array,还有ByteArray, ShortArray, IntArray,用来表示各个类型的数组,
//省去了装箱/操作,因此效率更高,其用法同Array一样:
val x: IntArray = intArrayOf(1, 2, 3)
x[0] = x[1] + x[2]
8.字符串
String 可以通过 trimMargin() 方法来删除多余的空白。
Kotlin 支持三个引号 “”" 扩起来的字符串,支持多行字符串,比如:
fun main(args: Array<String>) {val text = """多行字符串多行字符串"""println(text) // 输出有一些前置空格
}
fun main(args: Array<String>) {val text = """|多行字符串|菜鸟教程|多行字符串|Runoob""".trimMargin()println(text) // 前置空格删除了
}
四、Kotlin 条件控制
条件控制详情
总结
参考资料
以上就是今天的内容,仅仅是提取,供自己平时参考为用
kotlin的学习记录相关推荐
- kotlin电商学习记录,好久没来逛逛了
好久没来,一直做毕业设计,用kotlin写一个基于以图搜图的购物app,现在又赶上实习,内容多,时间少,不过前途光明并由贵人指点.加油 kotlin电商学习记录 技术选型 视图层 kotlin-and ...
- Kotlin学习记录(四)—— 常用集合的使用
接上篇: Kotlin学习记录(三)-- 子线程获取数据,实现简单ListView 集合在程序中的比例的很重的,Kotlin针对集合进行了更加简洁和有效的封装,这边文章就简单的介绍一下list,map ...
- Kotlin学习记录(三)—— 子线程获取数据,实现简单ListView
接上篇:Kotlin的变量.属性.类.构造函数.继承.方法 上一篇简单介绍了Kotlin的一些基础构成,当然还有像对象声明.操作符等等都未涉及到,这些会在以后用到的过程中进行详细说明. 项目中List ...
- Kotlin基础学习(1)
Kotlin基础学习(1) 本文主要讲解kotlin的部分基础知识,并不是全部基础. 提示:纯属个人理解,如有理解错误,欢迎留言指正批评. 一.Null检查机制 kotlin对于声明可为空的参数,使用 ...
- Kotlin DSL 学习
之前在<Effective Kotlin> 一书中,有一条专门讲解 DSL 的:考虑为复杂的对象创建定义 DSL,让我对 DSL 有了一定的了解. 为了能够更熟悉掌握Kotlin上的DSL ...
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- HTML5与CSS3权威指南之CSS3学习记录
title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...
- springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis
本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...
- 【Cmake】Cmake学习记录
Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...
最新文章
- 70个Python练手项目列表 预祝大家 快乐
- [转载].NET中高效能的socket编程
- Go 语言:The Laws of Reflection 中文版
- 微信小程序新增推广功能,支持自定义关键词
- 随机生成mysql测试表大量数据
- Pytorch LSTM初识(详解LSTM+torch.nn.LSTM()实现)1
- python如何调用阿里云接口_Python调用aliyun API设置阿里云负载均衡虚拟服务器组权重...
- 2022年南京大学软件工程专硕考研初试第二411分上岸经验贴
- 使用puppeteer实现PDF文件合成
- iso镜像添加软件包_iso镜像文件怎么安装 安装镜像文件的方法【图文】
- Unity3D 从 ipa 中提取游戏资源
- Adobe Photoshop CC 2014图文永久安装教程 1
- Windows10虚拟机安装和使用教程
- RTMP、RTSP、m3u8、flv 区别及含义
- 58沈剑解读:数据库典型架构实践
- kotlin集合过滤操作符
- MySQL自定义函数创建与使用总结
- Android开源项目 个性化控件(View)
- 梳理|对话系统中的DST
- effective C++条款四十三解读
热门文章
- java乱码base64_JavaScript BASE64算法实现(完美解决中文乱码)
- 如何简单快速的制作简历?
- appium连接vivo手机,启动APP后就不动了--其它手机正常
- 2012年计算机工作总结,计算机教师工作总结2011-2012
- 微信微博是谁的菜?分久必合
- 发表 SCI 封面文章是一种怎样的体验?
- linux与windows双系统windows无法连网问题的解决
- 【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(十五)
- Pytorch入门:60分钟快速入门,第一节:张量(tensor)
- javascript百炼成仙 第一章 掌握JavaScript基础 1.9 循环遍历的奥妙