Kotlin 学习-基础语法(1)

为什么要用kotlin

首先,看看Android开发者中心的回答:

  • 富有表现力且简洁:您可以使用更少的代码实现更多的功能。表达自己的想法,少编写样板代码。在使用 Kotlin 的专业开发者中,有 67% 的人反映其工作效率有所提高。
  • 更安全的代码:Kotlin 有许多语言功能,可帮助您避免 null 指针异常等常见编程错误。包含 Kotlin 代码的 Android 应用发生崩溃的可能性降低了 20%。
  • 可互操作:您可以在 Kotlin 代码中调用 Java 代码,或者在 Java 代码中调用 Kotlin 代码。Kotlin 可完全与 Java 编程语言互操作,因此您可以根据需要在项目中添加任意数量的 Kotlin 代码。
  • 结构化并发:Kotlin 协程让异步代码像阻塞代码一样易于使用。协程可大幅简化后台任务管理,例如网络调用、本地数据访问等任务的管理。

最关键的是什么呢?google 的力推!!!
随着kotlin 的扶正,越来越多的第三方的支持,jetpack的支持。。。。
反抗不了现实,那就一块学习拥抱kotlin吧。
先从基础语法开始。

1. 函数

kotlin中 函数的常见写法如下所示:

fun sum(a Int, b Int): Int {
	return a + b
}

在上面的函数中,fun 表示这是一个函数,sum 是函数名称,(a Int, b Int) 是参数列表。
这里面参数跟 java的声明正好相反。而参数列表后面的:Int 是指返回类型。在这里我们可以看到代码的末尾并没有;kotlin 中是可以省略的。

在kotlin 中像上面的函数还有更简单的写法,如下:

fun sum(a: Int, b: Int): Int = a + b
    
fun sum(a: Int, b: Int) = a + b

只有表达式体函数的返回类型才可以向上面这样省略。
对于有返回值的代码块体函数,必须显式的写出返回类型和return语句。

2. 变量

首先我们先看下在kotlin 中的变量常见的都有那些声明,

var name: String? = null // 初始值为null,可以再次赋值
var name2 = "tom" // 根据“tom”自动推断类型为String,可以再次赋值
val age: Int = 20  // 不可再次赋值

lateinit var adapter: UserAdapter // 延迟初始化,可以不设置初始值
// 懒加载 在用到的时候会执行lazy中的代码初始化
val homeAdapter: HomeAdapter by lazy { HomeAdapter(datas) }  

从上面的代码可以看出在kotlin 中,变量的声明声明是以关键字开始的。
val(来自value)-表示不可变引用。对应的是Java 中的final变量。
var(来自variable)-表示可变引用。变量的值可以被改变。

3. 字符串模板

对于字符串模板我们同样先看kotlin中的用法。

// print: tom的年龄是20
println("$name 的年龄是$age")
// print: 1 + 2 的值是:3
println("1 + 2 的值是:${sum(1, 2)}")

kotlin中字符串的拼接更加便捷,$后面可以直接拼接变量,也可以通过{}符号来拼接表达式。

4. if条件表达式

kotlin中的if表达式用法,如下:

// if 是有返回值的  可以直接给变量赋值
var age3 = if (age > age2) age else age2

// 也可以在函数中使用
fun age() = if (age > age2) age else age2

从上面的例子可以看出if表达式是有返回值的,在代码块的最后一行就是返回值,在变量和函数中赋值都可以用到。

5. when表达式

先来看kotlinwhen表达式的用法:

var age4 = when(name) {
    "Tom" -> 20
    "Jay" -> 25
    else -> 10
}

从上面的例子可以看出,when表达式跟if表达式一样,都是带返回值的表达式,用法有点像Java中的switch。但-> 的用法更简便,后边可以跟{}代码块,依然是最后一句代码为返回值。

6. for循环

kotlin中的for循环可以对任何的迭代器进行遍历,类似foreach,语法例子如下:

for (i in 1..3) {
    println(i)
}
print:
>1
>2
>3

for (i in 1 until 3) {
    println(i)
}
print:
>1
>2

for (i in 6 downTo 0 step 2) {
    println(i)
}
print:
>6
>4
>2
>0

从上面的第一个for循环中可以看出 1..3指的是区间包含首尾;
第二个for循环的until表示从1到3但不包含3;
第三个for循环的6 downTo 0 表示从6递减到0,step是步长,表示每次递减多少。

7. while循环

kotlinwhile循环和Javawhile循环没什么大的区别。如下:

while (x > 0) {
    x--
}

do {
  val y = retrieveData()
} while (y != null) // y 在此处可见

到这里kotlin的基础语法大概就差不过了,其他的跟java差不太多,主要还是一些习惯的问题。
kotlin的其他用法,比如习惯用法,顶层函数,扩展函数,高阶函数,协程。。。在后续的学习中再与大家分享吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值