美文网首页Kotlin
Kotlin基础一

Kotlin基础一

作者: KevinGarnett21 | 来源:发表于2022-04-01 23:27 被阅读0次

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


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

一. Kotlin特点

  • 简洁
  • 安全
  • 与Java互操作性

二. Kotlin基础

1. 数据类型

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

  • 数值型(大写):Byte(字节)、Short(短整型)、Int(整型)、Long(长整型)、Float(浮点型)、Double(双精度浮点型)

  • 布尔型: Boolean

  • 字符型: Char

  • 数组型: Array(Kotlin中不能使用stringArrayOf()方法创建字符串类型数组,因为String不属于基本数据类型。要想在Kotlin中声明字符串数组,需要使用Array<String>,并且对应的初始化数组的方法也相应变成了arrayOf(),这种初始化方式对于其他类型的数组同样适用)

  • 字符串型: String

字符串是不可变的,字符串中的元素可以使用索引的形式进行访问:即“变量名+角标”的形式,如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]

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

  • \r:表示回车符,将光标定位到当前行的开头,不会跳到下一行
  • \n:表示换行符,换到下一行开头。
  • \t:表示制表符,将光标移动到下一个制表符的位置,类似在文档中用Tab键的效果。
  • \b:表示退格符号,类似键盘上的Backspace键。
  • ':表示单引号字符,在Kotlin代码中单引号表示字符的开始和结束,如果直接写单引号字符('),程序会认为前两个是一对,会报错,因此需要使用转义字符(')。
  • ":表示双引号字符,Kotlin中双引号表示字符串的开始和结束,包含在字符串中的双引号需要转义,比如""。
  • \:表示反斜杠字符,由于在Kotlin代码中的反斜杠(\)是转义字符,因此需要表示字面意义上的\,就需要使用双反斜杠(\)
  • 原生字符串需要使用"""""",例如"""您 \n 好"""显示为 您\n好

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从基础到实战》

相关文章

网友评论

    本文标题:Kotlin基础一

    本文链接:https://www.haomeiwen.com/subject/tpyzjrtx.html