初识Kotlin

来源:互联网 发布:勇者斗恶龙java代码 编辑:程序博客网 时间:2024/06/07 00:08

导读

Kotlin是Google官方推出的Android开发语言,有了之前Android Studio的前车之鉴。毫无疑问无论是因为对新技术的好奇,还是因为Kotlin有一个强大的爹。Kotlin都是值得我们去学习的。所以让我们开始学习Kotlin。

Kotlin官方中文网站:https://www.kotlincn.net/

Kotlin基础学习

Kotlin内置类型表示数字
这里写图片描述

字面常量

Kotlin新颖的数字常量表示方式

val oneMillion = 1_000_000  //输出还是1000000val creditCardNumber = 1234_5678_9012_3456Lval socialSecurityNumber = 999_99_9999Lval hexBytes = 0xFF_EC_DE_5Eval bytes = 0b11010010_01101001_10010100_10010010

我们在官方文档会发现val 用来声明变量

val x: Int? = null #变量类型+?声明的是可空的val y: Int = null  #这样写是错误的,初始化不能为空

这里写图片描述

表示方式

在官方文档中有这么一段:

注意数字装箱不必保留同一性:val a: Int = 10000print(a === a) // 输出“true”val boxedA: Int? = aval anotherBoxedA: Int? = aprint(boxedA === anotherBoxedA) // !!!输出“false”!!!

博主就想如果a声明为可空会怎样也就是val a: Int? = 10000

val a: Int? = 10000print(a === a) val b: Int? = aval anotherb: Int? = aprint(b===anotherb)

结果
这里写图片描述
博主未弄懂为什么产生这样的原因,有人知道可以解释一下。

显式转换

Kotlin不支持较小的类型* 隐式 *的转化为较大的类型

val b: Byte = 1 // OK, .琌....val i: Int = b // ..

但是给出了显示转化函数
这里写图片描述
并且

val l = 1L + 3 #可以通过

运算

Kotlin⽀持数字运算的标准集,运算被定义为相应的类成员(但编译器会将函数调⽤优化为相应的指令)。

val x = (1 shl 2) and 0x000FF000 #运行结果为0

shl(bits) ‒ 有符号左移 (Java 的 << )
shr(bits) ‒ 有符号右移 (Java 的 >> )
ushr(bits) ‒ ⽆符号右移 (Java 的 >>> )
and(bits) ‒ 位与
or(bits) ‒ 位或
xor(bits) ‒ 位异或
inv() ‒ 位非
相等性检测:a == b 与 a != b
比较操作符:a < b 、 a > b 、 a <= b 、 a >= b
区间实例以及区间检测:a..b 、 x in a..b 、 x !in a..b

这里写图片描述
这里博主想了一下如果代码改成print(z in x..y)会是什么结果
这里写图片描述
结果false了- -

数组

Kotlin的数组创建很新颖

我们可以使.库函数 arrayOf() 来创建.个数组并传递元素值给它,这样 arrayOf(1, 2, 3) 创建了 array [1, 2, 3]。 或者,库函数
arrayOfNulls() 可以.于创建.个指定..、元素都为空的数组。
另.个选项是.接受数组..和.个函数参数的..函数,.作参数的函数能够返回给定索引的每个元素初始值:
// 创建.个 Array 初始化为 [“0”, “1”, “4”, “9”, “16”]
val asc = Array(5, { i -> (i * i).toString() })
解析: i分别取 0,1,2,3,4

Array可以创建不同类型的数据在同一个数组
例如

val x: Array<any> = arrayof(1,'a',2)

字符串

字符串可以包含模板表达式 ,即一些小段代码,会求值并把结果合并到字符串中。 模板表达式以美元符( :vali=10vals=i=i” // 求值结果为 “i = 10”
或者⽤花括号括起来的任意表达式:
val s = “abc”
val str = “s.lengthis{s.length}” // 求值结果为 “abc.length is 3”
原⽣字符串和转义字符串内部都⽀持模板。 如果你需要在原⽣字符串中表⽰字⾯值 valprice={'$’}9.99
“”“

个人感觉用来解决字符串和变量拼接的问题

欢迎提建议,大家共同交流,共同进步