Kotlin的基本用法

1. 环境配置

基本的配置步骤很容易在网上找到,就不详细说明了。
推荐配置:打开模块下的build.gradle文件,在apply plugin: 'kotlin-android'下面加入一行:apply plugin: 'kotlin-android-extensions'。这是一个Kotlin的扩展模块,可以让Activity自动关联xml布局中的View而不需要findViewById。

2. 将java文件转化为kotlin文件的方法

  • 在AS下通过快捷键Ctrl+Shift+A打开FindAction,输入Convert Java File to Kotlin File 可以将项目中的java文件转换为kotlin文件。
  • 在菜单栏中点击“Code”菜单项,选择“Convert Java File to Kotlin File”即可根据之前配置将已有的Java文件转换为Kotlin文件。

3. kotlin的基本用法

1.语句的结尾不用分号

2.定义

  • 定义变量和常量:在Kotlin中常量用val声明,变量用var声明,关键字在前面,类型以冒号:隔开在后面,也可以省略直接赋值,类型后带问号?表示可为空类型(默认空安全)。
    private var str: String? = null
    private var str1: String? = "hello world"
    private var str2 = "hello world"
    private val arrs = Array(3) { Array(2) { IntArray(1) } }
  • 定义方法: 在Kotlin中方法用fun声明,参数名在前,类型以冒号:隔开在后面。参数后冒号隔开的是返回值的类型。返回值为空可以省略。函数体可以是表达式,并可从中推断出返回值类型。函数参数可以设置默认值,当参数被忽略时会使用默认值。这样相比其他语言可以减少重载。
fun sum(a: Int = 0, b: Int = 1): Int {
     return a+b
}
fun sum1(a: Int, b: Int) = a + b
fun sum2(a: Int, b: Int){
println(a+b)
}
  • 定义类:在Kotlin中属性自动生成Java的getter/setter方法,方便在Java中调用,更方便赋值。括号内的参数代表构造方法的参数。
class User(name: String) {
    var name: String? = null
    var age: String? = null
}
//赋值
user.name = "zjj"
user.age = "21"
//取值
val name = user.name
val age = user.age

3. 使用 this@lable 作为 lable

为了在范围外部(一个类,或者表达式函数,或者带标签的扩展字面函数)访问 this ,我们需要在

class User {
    inner class State{
        fun getUser(): User{
            //返回User
            return this@User
        }
        fun getState(): State{
            //返回State
            return this@State
        }
    }
}

4. 字符串模板

在Java中拼接字符串的代码可读性都很差,在Kotlin字符串拼接变得非常简洁,只需用$后面加上参数名,复杂的参数要加上{}

var userInfo = "name:${user.name},  age:$age"

5. Ranges(范围)

for (i in 4 downTo 1) print(i) // prints "4321"
for (i in 1..4 step 2) print(i) // prints "13"
for (i in (1..4).reversed()) print(i) // prints "4321"

6. 条件

if...else 正常使用,不过移除了switch用更强大的when替代,when子式可以是常量、变量、返回数值的表达式、返回Boolean值的表达式,强大到用来替换if...else if

var x = 10
when (x) {
    //常量
    2 -> println("等于2")
    //数值表达式
    if (x > 0) 1 else -1 -> println("大于0并等于1,或小于0并等于-1")
    //Boolean类型表达式
    in 1..5 -> println("范围匹配1-5")
    !in 6..9 -> println("不是6-9")
    is Int -> println("类型判断")
    else -> println("else")
}
// 代替if...else if
when{
    x > 6 && x <= 10  ->  println("大于6小于等于10")
    x < 6 -> println("小于6")
    else -> println("else")
}

7. 循环

while 和 do...while 同Java并无区别,for则有很大改变并多出了几个变种

val list = ArrayList<String>()
//递增for (int i = 0; i < list.size(); i++)
for (i in list.indices) {
   print(list[i])
}
//递增for (int i = 2; i < list.size(); i++)
for (i in 2..list.size-1) {
   print(list[i])
}
//递减for (int i = list.size(); i >= 0; i--)
for (i in list.size downTo 0) {
    print(list[i])
}
//操作列表内的对象
for (item in list) {
    print(item)
}

8. 返回和跳转

在 Kotlin 中表达式可以添加标签,标签通过 @ 结尾来表示。
现在我们可以用标签实现 break 或者 continue 的快速跳转:

loop@ for (i in 1..100) {
    for (j in i..100) {
        if (...)
            break@loop
    }
}

break 是跳转标签后面的表达式,continue 是跳转到循环的下一次迭代。

参考文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,396评论 9 118
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,946评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,440评论 19 139
  • Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin,作为跟着Google玩儿An...
    蓝灰_q阅读 77,083评论 31 489
  • 呃,好像认识这么多年了,还真没认真的给你写过啥,总是你一直唠叨着让我减肥,让我努力变漂亮点,我好像到现在都还没做到...
    HelloHongKong阅读 1,560评论 0 0