Kotlin常用语法总结

1、变量定义
    var表示可读可写的变量        var string: String = "Hello"
    val表示只读的变量            val string: String = "Hello"

    Kotlin 有类型推导的特性,因此上述变量定义基本上都可以省略掉类型。

2、final类型的数据
    使用const关键字     const val string: String = "Hello"

3、静态变量、静态方法static final
    使用companion object{    ………………………………………………    }

4、如何定义数组
    val names: Array<String> = arrayOf("a", "b", "c")
    val list: Array<String?> = arrayOfNulls(10)

5、定义集合
    val list= listOf<String>("a", "b", "c")该集合只能进行只读操作
    val mutableList= mutableListOf<String>("a", "b", "c")该集合可以进行读写操作

    val map= mapOf<Int,String>()
    var mutableMapOf= mutableMapOf<Int,String>()

    val set= setOf<String>("a", "b", "c")
    val mutableSet= mutableSetOf<String>("a", "b", "c")

6、方法定义
    使用fun关键字,后面跟上方法名称,参数列表,返回值类型,不写返回值表示Unit类型,相当于Java中void:
    fun test(name: String): Boolean {
        ... ... ...
     }

7、main函数
    fun main(args: Array<String>){
        ...
     }

8、对象创建
    无惨对象创建:val arsg: Data = Data()
    有参数对象创建:val arsg: Parser = Parser("参数一","参数二")
    其中Data,Parser等类型修饰可以省略,kotlin可以根据前面的推算出来了

9、变长参数
    使用vararg修饰参数:
    void title(String... titles){
        ...
     }

10、JavaBean
    使用data关键字进行修饰类,放在class之前,就可以实现setter/getter方法,toString方法,hashCode方法,copy方法。这样我们在使用的时候可以直接获取到。例如:
    data class WeatherBean(
         val message: String
    )

11、获得class的实例
     val clazz = Hello::class.java  

     val hello = Hello()
     val clazz2 = hello.javaClass

12、权限修饰符
    除了和Java一样的之外多了 一个internal,表示模块之间可以进行访问

13、继承
    使用【:】表示,例如:class A : B(){ },表示A继承自B

14、接口实现
    使用【,】例如:class A,C{  },表示A实现C接口

14、类型转换符
    基本类型的转换使用其toXxx方法,例如:toInt

15、枚举
    使用enum关键字,用于设置枚举类型数据,enum和class共存静态方法。例如:enum class  dataset;

16、单例
    单例模式使用object关键字修饰。例如:object Instance

17、When表达式
    相当于Java中的switch,但是具有返回值,返回获取的值

18、by关键字
    用于属性代理设置

19、init关键字
    主构造函数初始化

20、open关键字
    Kotlin 默认会为每个变量和方法添加 final 修饰符。如果你确定这个类是会被继承的,那么你需要给这个类添加open修饰符。

21、sealed 密封类
    用来表示受限的类层次结构,可以防止非有意的派生。密封类的好处在于使用when表达式,如果能覆盖所有情况,无需再添加
else子句。

22、!!操作符
    显示获取空指针异常,如果数据可以为空不加的话连编译都不通过。

23、类型判断符 is
    等价于Java中的instanceof,但是不用强制类型转换。

24、范围操作符 .. 以及 in
    表示介于某一范围内,例如:i in 1..10,表示i在1到10之间。

25、运算符
    (1)===表示引用的比较,相当于Java中的==,
    (2)==表示equals
    (3)a<b相当于:a.compareTo(b)<0
    (4)a>b相当于:a.compareTo(b)>0

26、扩展方法
    用于对其他类的扩展,方法名称前面需要加上【扩展类名.方法名称】扩展方法不能有修饰符val或者var,例如Context的吐司:
    fun Context.toast(message: CharSequence,  duration: Int = Toast.LENGTH_SHORT){
        Toast.makeText(this,message,duration).show()
    }

27、Lambda 表达式
    Lambda 表达式,其实就是匿名函数,可以作为参数或者方法,构成为:参数列表 -> 表达式,例如:
    left: Int, right: Int->left + right
    Lambda 表达具有返回值,返回值就是表达式的值。

28、构造函数
    (1)主构造函数:写在类头中,跟在类名后面,在主构造函数中不能有任何代码实现,如果有额外的代码需要在构造方法中执行,你需要放到init代码块中执行。例如:
    class data(val name: String){
        init{         初始化相关代码          }
    }

    (2)次构造函数:使用constructor修饰,次构造函数不能有声明 val 或 var,this表示委托给父类
    constructor(name: String, age: Int): this(){

    }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值