Kotlin 基础语法快速入门教程(2)

1). Kotlin特色
Java的getter/setter方法自动转换成属性,对应到Kotlin属性的调用

public class User { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }

这样一个Java类在Kotlin中只需这样调用

val user = User() //赋值 user.name = "tutu" user.age = "23" //取值 val name = user.name val age = user.age

反之Kotlin的属性自动生成Java的getter/setter方法,方便在Java中调用,同样的定义在Kotlin中

class User { var name: String? = null var age: String? = null }

我们的getter/setter方法有时不会这么简单,这就需要自定义getter/setter了,另起一行设置get()/set(value)方法,实现一个Java中常用的单例,这里只为了展示,单例在Kotlin有更简单的方法实现,只要在 package 级别创建一个 object 即可

class User { companion object { @Volatile var instance: User? = null get() { if (field == null) { synchronized(User::class.java) { if (field == null) field = User() } } return field } } var name: String? = null var age: String? = null }

自定义getter/setter重点在field,跟我们熟悉所Java的this指代当前类一样,field指代当前参数,直接使用参数名instance代替不会报错但单例就没效果了

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

val user = User() //赋值 user.name = "tutu" user.age = "23" //取值 val name = user.name val age = user.age var userInfo = "name:${user.name}, age:$age" //输出结果:name:tutu, age:23

3). lambda
一开始觉得lambda很高级完全看不懂,其实很简单的就是把接口名、方法名和参数类型省掉不写再加个->罢了,明白这点了就不介绍。

新面孔

1). 延迟加载
2). 流程控制
内容参考 Android Kotlin 学习笔记,不重复介绍

空判断

Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式一种像Java一样抛出空异常,字段后加!!,另一种不做处理直接跳过,字段后加?

//类型后面加?表示可为空 var age: String? = "23" //抛出空指针异常 val ageInt = age!!.toInt() //不做处理跳过 val ages = age?.toInt() 注意事项

内部类和参数默认为public,而在Java中为private
类默认为不可继承(final),想要可被继承要声明为open或abstract
取消了static关键字,静态方法和参数统一写在companion object块
internal模块内可见,inner内部类

以上仅是对使用频率较高的语法总结,学会基本可以阅读Kotlin代码,遇到点问题Google速查一下,至于智能转换、类型推导之类的不用说使用后喜欢自然就会了。当然这只是kotlin的基本语法,方便Java快速熟悉kotlin,深入学习还请阅读相关资料。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/fd89d6679ab79b263eb22568e2962c0f.html