Kotlin入门-与java的差异【入门级】

在这里插入图片描述

基本类型

详情 请点击查看

Kotlin Java 差异理解
基本类型 万物皆对象,基本类型也是对象 基本类型不是对象 融合了int和Integer,作统一管理
数字下划线 增加数字下划线,更易读 不支持 增强数字的可阅读性
数值赋值 会产生新对象 基础类型不会产生对象 增加了=== 值比较
数值转换 必须要显式转换 理解为Integer的话,其实也是要显式转换
位运算 一堆符号 用关键字
字符对比 不可当数字 可以自动转数字
字符串 有"""原始字符串 新增了"""功能
末尾有无分号 无分号,系统自动添加 有分号

条件判断

详情 请点击查看

Kotlin Java 差异理解
区间判断 可以进行x…y的区间判断 需要用< >进行范围判断 Kotlin简化了常用的判断
when 可跟任意判断逻辑进行组合 java中是switch是对单一类型进行判断 Kotlin简化了条件判断,并支持了多种条件

循环判断

详情 请点击查看

Kotlin Java 差异理解
for循环 简化for循环索引和取值 Kotlin简化循环中获取index、value
标签 增加了标签功能 Kotlin局部加强了循环的结束跳转

包、类和对象

详情 请点击查看

Kotlin Java 差异理解
包导入 添加as关键字,支持别名 不支持 kotlin解决了包名冲突
构造函数 添加了主\次构造函数概念 引入了主\次构造函数后,简化了结构体的编码,如java单例模式中的private结构体
override 相比java,对继承中,增强 改变的部分 的标注 kotlin在安全方面的考量更多

属性

详情 请点击查看

Kotlin Java 差异理解
field 引入了field字段 kotlin解决了包名冲突
属性的getter&setter 物理上聚拢跟属性相关的操作 需要通过function进行操作 kotlin更精简
变量的声明 简化val 和var两种 java是强类型语言
变量延迟初始化 引入lateinit处理

接口

详情 请点击查看

Kotlin Java 差异理解
接口实现机制 可指定super的基类 只有一个基类

扩展

详情 请点击查看

Kotlin Java 差异理解
动态扩展 动态扩展属性、函数,静态解析 只能通过继承解决

数据类&密封类

详情 请点击查看

Kotlin Java 差异理解
数据类 data快捷自动创建 通过插件解决 Kotlin提供了setter\getter\equals\toString等快捷生成的函数,更为便捷
密封类 enum的扩展类。操作类型有限定,但是可以自动组合 java无法二次组合

枚举类

详情 请点击查看

Kotlin Java 差异理解
枚举类 代码量更少 java代码多一些 功能都可以实现,只是代码量区别

对象表达式和对象声明

详情 请点击查看

Kotlin Java 差异理解
单例模式 object声明后天然单例,通过类名调用 4种单例,各有区别,通过实例获取 kotlin代码少多了,还避免的 内存模型的考虑
object和any 新增了any,两者是编译期区别,运行期一样
private和非private函数 返回值会不一样 无差别
增加伴生对象 增加了伴生对象 伴生对象补偿了object类的初始化需求

别名

详情 请点击查看

Kotlin Java 差异理解
增加typealias 使用typealias后名称更美丽 kotlin考虑了视觉美观

委托

详情 请点击查看

Kotlin Java 差异理解
by关键字 委托的快捷实现 也可以实现
lazy懒加载 新增了lazy关键字,懒加载更方便 可实现,但需要编写实例化的语句
观察者模式 增加Delegates.observable,变量变化已追踪 需要统一的设置入口,编码要规范

泛型

详情 请点击查看

Kotlin Java 差异理解
out、in关键字 支持型变 不支持,需要通过T来约束实现类似的功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章