Kotlin的基础用法

目录

  • 1、概述
  • 2、如何创建一个类
            • (1)、var:
            • (2)、lateinit :
            • (3)、 inner class:
            • (4)、lateinit var retObj: RetObjBean:
  • 3、子类继承父类
            • (1)、 :Application()
            • (2)、override fun onCreate()
  • 4、声明一个带返回值的函数
  • 5、for循环咋写
  • 6、总结

1、概述

“如果你正在为Android开发寻找一种替代编程语言,那么应该试下Kotlin。它很容易在Android项目中替代Java或者同Java一起使用。”–Hathibelagal

Kotlin v1.0于2016年2月15日发布。这被认为是第一个官方稳定版本,并且JetBrains已准备从该版本开始的长期向后兼容性。
在Google I/O 2017中,Google宣布在Android上为Kotlin提供最佳支持。

时光如梭,Kotlin语言已经发布3年了,作为Android开发者来说,kotlin语言将成为不得不掌握的一项新语言,尤其时kotlin语言引入协程(Coroutine)这一特性之后,优势更加明显。

Kotlin+Mvvm这样的组合架构已逐渐成为主流,博主正在使用这一架构进行项目开发,代码量大大减少,框架结构清晰,推荐大家去学习掌握,后期我会将使用到项目中的这一架构独立出来成文,欢迎大家关注本博后续。

2、如何创建一个类

举个例子:
ResLogin.kt

class ResLogin {
    var code = -1
    var msg = ""
    var token = ""

    lateinit var retObj: RetObjBean
    inner class RetObjBean {
        var id = 0
        var name = ""
    }
}

对应的Json字符串:

{
    "retCode": 0,
    "retMsg" : "success",
    "retObj ": {
        "id":378,
        "name":"admin"
    },
    "token" : "3b6abdb79b29d6ce33b71c9da5d30de6"
}

属性声明之后会自动生成get,set方法,我们使用的时候直接通过(类的实例.属性名)进行赋值和取值操作。

例如:

var login = ResLogin()
login.code = 0 //赋值 相当于set方法 
print(login.retMsg) //取值 相当于get方法 

与java类不一样的地方有4处:

(1)、var:

声明属性变量的关键字,可以根据赋值自动推断属性的数据类型

(2)、lateinit :

这个关键字 是 late init 两个单词的组合,即延迟初始化的意思,不需要立即复制为null,而是等到需要用的时候再进行赋值操作。

注意:lateinit 修饰不可以修饰原始数据类型(byte,char,short ,int,long,float,double),但可以修饰String,及自定义的class类等。

当我们不添加此关键字就会报下面的错误。
在这里插入图片描述
lateinit 详解参考

(3)、 inner class:

与java的static class 声明静态内部类用法雷同,只是关键字不同,因为kotlin已经没有static关键字了。

(4)、lateinit var retObj: RetObjBean:

声明一个为RetObjBean类型的retObj属性。这个写法很奇怪,属性的类型是:后写式的,与java完全不同,所以需要习惯。

3、子类继承父类

举个例子:
ProjectApplication .kt

class ProjectApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        LitePal.initialize(this)
        context = this
    }

    companion object {
        lateinit var context: Context
    }

}

与java继承的写法不同之处有2处:

(1)、 :Application()

使用:+父类名()这样的写法来继承父类,和我们原来的写法不同,:代表继承的意思,Application代表父类名称, ()代表父类的默认构造函数。

(2)、override fun onCreate()

重写父类的方法也有变化,override为重写关键字,fun代表声明一个方法的关键字与class关键一样,作用类同,onCreate为方法名,()为形参。

我们关注下这段代码:

companion object {
        lateinit var context: Context
    }

companion object :翻译 成 伴随对象的意思, 属于类的本身,所以 companion object 是不能脱离类而定义在全局之中。
它类似 Java 里的 static 变量,直接类名打点调用。
如:
在这里插入图片描述

4、声明一个带返回值的函数

举个例子:

/**
 * 日期格式化
 *
 * @param date    需要格式化的日期
 * @param pattern 时间格式,如:yyyy-MM-dd HH:mm:ss
 * @return 返回格式化后的时间字符串
 */
fun format(date: Date, pattern: String): String {
    val sdf = SimpleDateFormat(pattern)
    return sdf.format(date)
}

可以看到形参的声明和属性声明一样都是采用:参数类型在冒号之后。
注意函数的返回值信息,直接跟在函数的小括号之后用(:返回值类型)的方式。
调用和java是一样的。

5、for循环咋写

和java的写法有一点区别,变成了in 和 … 关键字。
举个例子:

for (index in 0..3) {
	print(index.toString())
}

输出结果:

0 
1 
2 
3

6、总结

本文内容都比较简单,kotlin语言的学习捷径,就是用它、用它、还是用它。只有熟练使用了,对应后面MVVM架构的结合将会大有裨益。

Kotlin的基础用法_第1张图片
微信公众号一粒尘埃的漫旅
里面有很多想对大家说的话,就像和朋友聊聊天。
写代码,做设计,聊生活,聊工作,聊职场。
我见到的世界是什么样子的?
搜索关注我吧。

公众号与博客的内容不同。

你可能感兴趣的:(Kotlin)