Kotlin Base
2021-02-25 11:02:10 0 举报
AI智能生成
kotlin对比java学习
作者其他创作
大纲/内容
继承类、实现接口
都是用:
当类中没有构造器,需要在类后面加上()
by可对接口进行委托
空安全设计
可空类型TextView?
不可空类型TextView
.?安全调用,不可以为空
!!强制调用 为空抛出异常
平台类型
在类型后面加上!为平台类型
java可以通过注解减少平台类型的产生
@Nullable可空类型
@NotNull@NonNull不可空类型
获取 Class 对象
使用类名::class获取Kotlin的类型KClass
使用类名::calss.java获取的是java的类型
Any 和 Unit
Any相当于Object,少了wait和notify
Unit相当于void,没有返回值
数组
arrayof(),基本数据类型使用对应的intArrayOf
基本数据类型/包装类型
Java类型---Kotlin类型
byte---Byte
short---Short
int---Int
long---Long
char---Char
float---Float
double---Double
boolean---Boolean
Java的装箱原始类型映射到可空的Kotlin类型+?
字符串
字符串模版通过${}形式
通过一对"""来代替\n拼接多行字符串
when
Java当中的switch的高级版,分支条件可以支持表达式
异常
Kotlin不需要try-catch强制捕获异常
标签
内部类引用外部类时
Java中通过类名.this 获取目标类引用
Kotlin中通过this@类名获取目标类的引用
内部类
内部类默认是静态内部类
通过inner关键字声明为嵌套内部类
注释
可以在任意地方使用[]来引用目标,代替@param @link
open/final
Kotlin中的类和函数默认被final修饰的
abstract和override除外
函数声明
fun关键字类似class作用
参数类型在参数名的右边用:分隔
返回值在参数右边用:分隔,没有返回值可以省略
变量声明
val声明只读变量
var声明可读可写变量
创建对象直接调用构造器,不用new对象
类型在变量右边,用:隔开,如果满足类型推断,可以不写
lateinit
只能修饰var可读可写变量
声明变量为不可空类型
声明的变量不能有初始值
声明的变量不能是基本数据类型
构造器中初始化的属性需要lateinit关键字
类型判断
is判断属于某种类型,类似InstanceOf
!is判断不属于某种类型
as类型强制转换,失败时抛出类型强转异常
as?类型强制转换,失败时不会抛出异常,而是返回null
setter/getter
声明属性不用private
自动生成私有属性和一对公开的getter、setter
用filed代替内部的私有属性
构造器
construct关键字声明构造器
构造器中主动调用父类构造,继承类的时候不能在类的后面加上小括号
@JvmField 生成属性
通过@JvmFiled注解生成公开的成员属性,不生成setter、getter
静态函数和属性
顶层函数
直接在文件中定义函数和属性,会直接生成静态代码
Java通过文件名Kt进行访问
通过@file:JvmName注解修改类名
不要声明在module内最外侧,至少要在一个包里:com
单例对象
object
单例/匿名内部类
companion object
两者都是生成单例对象来访问函数和属性
@JvmStatic通过这个注解声明静态代码
区间
200...299表示200到299,包括299
声明接口/抽象类/枚举/注解/印章类
abstract class
interface
annotation class
enum class 专注于数据
Sealed class(密封类) 专注于类型(子类类型有限制)
编译期常量
静态变量上加上const关键字变成编译期常量
遍历
for(item in items)
可见性修饰符
默认public
新增internal表示当前模块可见
非空断言
可空类型强制转换成不可空类型,在变量后面加上!!
收藏
0 条评论
下一页