Kotlin

Kotlin基础一

2022-04-01  本文已影响0人  KevinGarnett21

  种一棵树最好的时间是在十年前,其次就是现在


  最近受疫情以及周围环境的影响,尤其是各种贩卖焦虑的文章,一个步入中年的搬砖人打算沉下心来充(打)实(发)自(时)己(间),报了1元理财课,就想着能不能通过理财实现财务自由吧,发现短时间是没可能,而且确实没时间去研究;然后又看了几本心理学书,物质上不能丰富,总得解决一下心理疾病吧,别说,看了还有那么点意思,反正尽可能控制下情绪吧;最后作为一个搬砖人员,最关键的还是得提高自己的技术吧,在公司内部也产生了一丢丢的小分歧,有的人想更从深度上着手,我确实非常认同,作为一个Android应用层的码农,有时候遇到点framework层上的问题,难以着手,颇感头痛,2021年也组织过去学习C,去学习webrtc,老实说,当时环境的缺失以及没有合适的项目,有点半途而废的感觉,所以暂时放弃了从深度着手。今年刚好有几个关于硬件设备的终端项目,偏小,鄙人我就打算从Kotlin入手了,之前也做过Kotlin的项目,主要是基于维护,这次就想系统的学习起来,恰巧看了几本Kotlin书籍,那就择日不如撞日开始干了,希望有一起学习的小伙伴加入进来,互相学习分享。

一. Kotlin特点

二. Kotlin基础

1. 数据类型

Kotlin语言中的数据类型不区分基本数据类型和引用数据类型,分为<u>数值型、字符型、布尔型、数组型、字符串型</u>;

字符串是不可变的,字符串中的元素可以使用索引的形式进行访问:即“变量名+角标”的形式,如str[i];也可以用for循环遍历字符串

// 字符串
val str = "hello world"
val str_2 = str[2]
println("str index 2:$str_2")
// 打印信息 str index 2 : l
for (s in str) {
    // 字符串模板表达式由${变量名/函数/表达式}
    println("for循环:$s")
}

/**-----------------分割线------------------*/

// 字符串分隔符:在Kotlin中,split()函数还可以传入多个拆分符,多个拆分符中间只需用逗号分隔即可
val splitStr = "hello.kotlin/world"
val split = splitStr.split(".", "/")
println(split)
// 打印信息: [hello, kotlin, world]

/**-----------------分割线------------------*/

// 字符串分隔符:在Kotlin中,split()函数还可以传入多个拆分符,多个拆分符中间只需用逗号分隔即可
val splitStr = "hello.kotlin/world"
val split = splitStr.split(".", "/")
println(split)
// 打印信息: [hello, kotlin, world]

转义符:采用反斜杠""方式将字符进行转义,长用转义如下

2. 运算符

// 取模--在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。例如(-1)%2=-1,而1%(-2)=1。
val m1 = 1000 % 3
val m2 = -1000 % 3
val m3 = 1000 % -3
println("m1:$m1,m2:$m2,m3:$m3")
// 打印信息: m1:1,m2:-1,m3:1

3. 空值处理

1) 可空类型变量(?)

var name : String? = null

2) 安全调用符 (?.)

var name : String? = null
var length = name?.length
// 跟Java中的
if (null != name) {
    int length = name.length
}

3) Elvis操作符(?:)

语法格式为“表达式?:表达式”。如果左侧表达式非空,则返回左侧表达式的值,否则返回右侧表达式的值。当且仅当左侧为空时,才会对右侧表达式求值。

val name : String? = null
val length = name?.length ?: name?.length
println("length:$length")

4) 非空断言(!!.)

“变量!!.成员”。非空断言(!!.)会将任何变量(可空类型变量或者非空类型变量)转换为非空类型的变量,若该变量为空则抛出异常

// 非空断言
var assertString : String? = null
var str = assertString!!.length
// 报错: NPE

?.与!!.使用对比

可空&断言对比.png

引用书籍: 《Kotlin从基础到实战》

上一篇下一篇

猜你喜欢

热点阅读