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 官方开发语言。
特点:

  1. 简洁: 大大减少样板代码的数量。
  2. 安全: 避免空指针异常等整个类的错误。
  3. 互操作性: 充分利用 JVM、Android 和浏览器的现有库。
  4. 工具友好: 可用任何 Java IDE 或者使用命令行构建。

Kotlin 程序文件以 .kt为后缀名

二、学习引入

1.第一个Kotlin程序

代码如下(示例):

package hello                      //  可选的包头
fun main(args: Array<String>) {    // 包级可见的函数,接受一个字符串数组作为参数println("Hello World!")         // 分号可以省略,换行print("Hello World!")           //不换行
}

2.基本语法

  1. 函数定义 :使用关键字 fun,参数格式为:参数 : 类型

  2. 定义常量与变量: 可变变量定义:var 关键字 不可变变量定义:val 关键字

  3. 注释: // 这是一个单行注释 /* 这是一个多行的 块注释。 */

  4. 字符串模板

  5. NULL检查机制
    Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理

  6. 区间
    区间表达式由具有操作符形式 … 的 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的学习记录相关推荐

  1. kotlin电商学习记录,好久没来逛逛了

    好久没来,一直做毕业设计,用kotlin写一个基于以图搜图的购物app,现在又赶上实习,内容多,时间少,不过前途光明并由贵人指点.加油 kotlin电商学习记录 技术选型 视图层 kotlin-and ...

  2. Kotlin学习记录(四)—— 常用集合的使用

    接上篇: Kotlin学习记录(三)-- 子线程获取数据,实现简单ListView 集合在程序中的比例的很重的,Kotlin针对集合进行了更加简洁和有效的封装,这边文章就简单的介绍一下list,map ...

  3. Kotlin学习记录(三)—— 子线程获取数据,实现简单ListView

    接上篇:Kotlin的变量.属性.类.构造函数.继承.方法 上一篇简单介绍了Kotlin的一些基础构成,当然还有像对象声明.操作符等等都未涉及到,这些会在以后用到的过程中进行详细说明. 项目中List ...

  4. Kotlin基础学习(1)

    Kotlin基础学习(1) 本文主要讲解kotlin的部分基础知识,并不是全部基础. 提示:纯属个人理解,如有理解错误,欢迎留言指正批评. 一.Null检查机制 kotlin对于声明可为空的参数,使用 ...

  5. Kotlin DSL 学习

    之前在<Effective Kotlin> 一书中,有一条专门讲解 DSL 的:考虑为复杂的对象创建定义 DSL,让我对 DSL 有了一定的了解. 为了能够更熟悉掌握Kotlin上的DSL ...

  6. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  7. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  8. springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis

    本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...

  9. 【Cmake】Cmake学习记录

    Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...

最新文章

  1. 70个Python练手项目列表 预祝大家 快乐
  2. [转载].NET中高效能的socket编程
  3. Go 语言:The Laws of Reflection 中文版
  4. 微信小程序新增推广功能,支持自定义关键词
  5. 随机生成mysql测试表大量数据
  6. Pytorch LSTM初识(详解LSTM+torch.nn.LSTM()实现)1
  7. python如何调用阿里云接口_Python调用aliyun API设置阿里云负载均衡虚拟服务器组权重...
  8. 2022年南京大学软件工程专硕考研初试第二411分上岸经验贴
  9. 使用puppeteer实现PDF文件合成
  10. iso镜像添加软件包_iso镜像文件怎么安装 安装镜像文件的方法【图文】
  11. Unity3D 从 ipa 中提取游戏资源
  12. Adobe Photoshop CC 2014图文永久安装教程 1
  13. Windows10虚拟机安装和使用教程
  14. RTMP、RTSP、m3u8、flv 区别及含义
  15. 58沈剑解读:数据库典型架构实践
  16. kotlin集合过滤操作符
  17. MySQL自定义函数创建与使用总结
  18. Android开源项目 个性化控件(View)
  19. 梳理|对话系统中的DST
  20. effective C++条款四十三解读

热门文章

  1. java乱码base64_JavaScript BASE64算法实现(完美解决中文乱码)
  2. 如何简单快速的制作简历?
  3. appium连接vivo手机,启动APP后就不动了--其它手机正常
  4. 2012年计算机工作总结,计算机教师工作总结2011-2012
  5. 微信微博是谁的菜?分久必合
  6. 发表 SCI 封面文章是一种怎样的体验?
  7. linux与windows双系统windows无法连网问题的解决
  8. 【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(十五)
  9. Pytorch入门:60分钟快速入门,第一节:张量(tensor)
  10. javascript百炼成仙 第一章 掌握JavaScript基础 1.9 循环遍历的奥妙