Kotlin学习笔记基础知识篇

在 Kotlin 里,一切都是对象。

变量声明

Kotlin中使用“val”或者是“var”这样的关键字作为开头,后面跟“变量名称”,接着是“变量类型”和“赋值语句”,最后是分号结尾。

/*
关键字     变量类型
 ↓          ↓           */

var price: Int = 100;   /*
     ↑            ↑
   变量名        变量值   */

在 Kotlin 当中,我们应该尽可能避免使用 var,尽可能多地去使用 val。

  • val 声明的变量,我们叫做不可变变量,它的值在初始化以后就无法再次被修改,它相当于 Java 里面的 final 变量。
  • var 声明的变量,我们叫做可变变量,它对应 Java 里的普通变量。

空安全

Kotlin 强制要求开发者在定义变量的时候,指定这个变量是否可能为 null。 数字类型 Java 可以隐式转换数字类型,而 Kotlin 更推崇显式转换。

函数声明

/*
关键字    函数名          参数类型   返回值类型
↓        ↓                ↓       ↓      */

fun helloFunction(name: String): String {
    return "Hello $name !"
}/*   ↑
花括号内为:函数体
*/

  • 使用了 fun 关键字来定义函数;
  • 函数名称,使用的是驼峰命名法(大部分情况下);
  • 函数参数,是以 (name: String) 这样的形式传递的,这代表了参数类型为 String 类型;
  • 返回值类型,紧跟在参数的后面;
  • 最后是花括号内的函数体,它代表了整个函数的逻辑。
fun helloFunction(name: String): String = "Hello $name !"

这种写法,我们称之为单一表达式函数。需要注意的是,在这种情况下,表达式当中的“return”是需要去掉的。

函数调用

helloFunction(name = "Kotlin")

命名参数。简单理解,就是它允许我们在调用函数的时候传入“形参的名字”。 Kotlin 还支持参数默认值。

流程逻辑判断

if

Kotlin 针对这种情况就提供了一种简写,叫做 Elvis 表达式。

fun getLength(text: String?)Int {
  return text?.length ?: 0
}

when

多于两个分支的逻辑

val i: Int = 1

when(i) {
    1 -> print("一")
    2 -> print("二")
    else -> print("i 不是一也不是二")
}

输出结果:

也可以作为表达式

val i: Int = 1

val message = when(i) {
    1 -> "一"
    2 -> "二"
    else -> "i 不是一也不是二" // 如果去掉这行,会报错
}

print(message)

注意点:与 switch 不一样的是,when 表达式要求它里面的逻辑分支必须是完整的。

for循环

基础迭代遍历

val array = arrayOf(123)
for (i in array) {
    println(i)
}

区间

val oneToThree = 1..3 // 代表 [1, 3]

for (i in oneToThree) {
    println(i)
}

输出结果:
1
2
3

逆序迭代

for (i in 6 downTo 0 step 2) {
    println(i)
}

输出结果:
6
4
2
0

改进之处

相对Java来说,Kotlin的改进有以下几点:

  • 支持类型推导;
  • 代码末尾不需要分号;
  • 字符串模板;
  • 原始字符串,支持复杂文本格式;
  • 单一表达式函数,简洁且符合直觉;
  • 函数参数支持默认值,替代 Builder 模式的同时,可读性还很强;
  • if 和 when 可以作为表达式。

总结

  • 强制区分“可为空变量类型”和“不可为空变量类型”,规避空指针异常;
  • 推崇不可变性(val),对于没有修改需求的变量,IDE 会智能提示开发者将“var”改为“val”;
  • 基础类型不支持隐式类型转换,这能避免很多隐藏的问题;
  • 数组访问行为与集合统一,不会出现 array.length、list.size 这种恼人的情况;
  • 函数调用支持命名参数,提高可读性,在后续维护代码的时候不易出错;
  • when 表达式,强制要求逻辑分支完整,让你写出来的逻辑永远不会有漏洞。
Kotlin学习笔记基础知识篇


原文始发于微信公众号(君伟说):Kotlin学习笔记基础知识篇

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/115126.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!