Java转Kotlin

Kotlin 是一种静态编程语言

2011JetBrains开始开发Kotlin,用于多平台应用(能脱离虚拟机,直接编译成可以在win,mac,linux运行的二进制代码)

2017获得谷歌官方支持

语法简洁(减少了大量的样板代码,语法糖),提供了空安全、协程、函数式编程(高阶函数和 Lambda 表达式)、函数扩展等特性,并且与Java有良好的互操作性。缺点是相对年轻,缺少一些成熟的库和工具。

1.声明变量、常量

val声明只读变量

类型推断:

一些能够自己推断出类型。就不用写类型,比如 var age=5

常量需要写到函数外,否则报错:

const val MAX1=1

因为这些编译时就确定,放到函数里面,函数要执行了才确定。所以放到外面。

放到伴生对象里面也行,伴生对象类似静态。

2.数据类型

首字母都大写了,都是对象

Int , -21474836482147483647

Java有基本和引用数据类型。  

Kotlin只有引用,但是最后编译器会改为基本数据类型,提高效率。

3.分号没了

4.let with run apply also  takeif  takeunless

let 传入it,返回代码块结果
also 传入it,返回this 

with 传入this,返回代码块结果
run 传入this,返回代码块结果
apply 传入this,返回this 

takeif ,类似if。函数体内要返回ture或者false,类似if里面的ture或者false。如果true,执行后面

takeUnless,和上面类似,但是判断里面是false,才执行后面

5.@JvmOverloads等

几个都是用来java调用kotlin的?

@JvmOverloads

在有默认参数值的方法中使用@JvmOverloads注解,则kotlin会暴露多个重载方法。

参数都没有默认值,写了这个注解,那还是只有一个方法。

@JvmField

把类里面的成员变量暴露出来,不用get也能访问

@JvmName

改个别名

@JvmStatic

类型JvmField,暴露伴生对象

@Throws

解决Java和Kotlin的异常检查的差异

6.查看字节码

双击shift,输入show kotlin bytecode 

Tools -> Kotlin -> Show Kotlin Bytecode。

7.条件语句

when

8.在什么范围 range

9.箭头符号 ->

箭头符号 -> 在 Kotlin 中扮演了多种角色,包括定义 Lambda 表达式、函数类型

val a: (Int) -> Int = { x -> x * x }

fun performOperation(x: Int, operation: (Int) -> Int): Int { return operation(x) }

10.函数声明

可以给函数默认参数

还有具名函数参数,就是给具体名字来写每个参数。就可以不按顺序了。

Unit类似void,它也是一个类型,不是 “没有类型”

TODO,不会只有提示,会直接异常中断,返回Nothing类型

函数名加反引号,避免两边语言关键字不一样导致取名取到对方不识别的函数名的问题,就可以相互愉快的访问了

给函数参数传  _  下划线,表示不赋值

11.list set map

list

里面可以存任意类型

listOf可以创建,也可以直接大括号

有提供getOrElse getOrNull等函数

MutableList 是可变的list

两种列表可以相互转换

Set

无序不能重复

也有可变和不可变

Map

mapOf来创建

也有可变和不可变

12. 类

默认都是不可继承,需要继承,加open

默认给成员变量,生成get set

可以修改get set,用到field关键字。这个代表这个变量的引用?每个变量都有一个field

主构造函数:

直接写在类后面小括号里面,那只能传参数,不能有代码了

次构造函数:

用constructor

次构造必须要调用主构造才行。

初始化顺序:

init创建对象就会调用

lateinit,延迟初始化:

类似dart 的late。

惰性初始化:

config被用的时候,才会调用后面的函数

13.其他

解构  方便一次返回多个值
委托  ab类继承c类。 原来各自构造。   可以通过d类,来管理ab,都用他来构造

reified 知道泛型类型。

infix  语法糖。适用单个参数的函数。在函数前面加infix关键字,使用的时候就把  xxx.to(yyy)  变为  xxx to yyy 

zip 合并两个集合,返回一个新集合

fold 合并

map 变换函数

返回:

flatMap

返回123456

filter 过滤

返回  Jack Jimmy

14.协程

是对线程封装的api,方便调用。单个线程内,性能一样

runblocking,launch,async多种方法
CoroutineScope
 

async和await结合使用

suspend 挂起。从当前线程脱离,进入另外一个线程。 在当前线程,就是挂起的状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一、写给Android开发者之harmony入门

一、创建新项目 对比 android-studio:ability类似安卓activity ability分为两种类型(Stage模型) UIAbility和Extensionability(提供系统服务和后台任务) 启动模式 1、 singleton启动模式:单例 2、 multiton启动模式&#xff1…

Pycharm 执行pytest时,会遇见某些case Empty suite

我这边的情况是有些case就是执行不了,百度了很多,有说设置选pytest的,有命名规范的,都没有成功。后面问了同事之后才发现,pytest 的框架,pytest.ini 执行的时候,加了个标签,主动把某…

在uniapp中如何安装axios并解决跨域问题

目录 1、安装axios 2、导入 3、使用(发请求) 2.解决跨域问题 1.为什么要解决跨域问题? 2.前端如何解决跨域问题? 1、安装axios npm install axios 2、导入 在main.js中导入使用 import axios from axios; // 创建一个名…

【SVN-TortoiseSVN】SVN 的简介与TortoiseSVN 安装使用教程

目录 🌞前言 🌊1. SVN 的简介 🌍1.1 SVN是什么 🌍1.2 SVN 工作原理 🌍1.3 TortoiseSVN 术语及定义 🌊2. TortoiseSVN 安装与汉化 🌊3. SVN 基本操作-TortoiseSVN 🌍3.1 浏览…

AI助力制造行业探索创新路径

近期,著名科技作家凯文凯利(K.K.)来到中国,发表了一场演讲,给广大听众带来了深刻的启示。他在演讲中强调了人工智能(AI)对全球经济的重大影响,并提出了AI发展的多个观点: AI的多样性…

gitee 简易使用 上传文件

Wiki - Gitee.com 官方教程 1.gitee 注册帐号 2.下载git 安装 http://git-scm.com/downloads 3. 桌面 鼠标右键 或是开始菜单 open git bash here 输入(复制 ,粘贴) 运行完成后 刷新网页 下方加号即可以添加文件 上传文件 下载 教程…

记录Postgresql 报错 the database system is in recovery mode

在开发环境中,突然有一天来到公司启动项目的时候报错 看到这个报错肯定是数据库出啥问题了,我们的数据库是部署在docker里面的。 远程服务器之后,使用命令查看容器,发现数据库容器还是启动着的 docker ps 那就进去容器内部看看…

推荐几款国内的AI写作工具,好用免费还能在线生成AI文案

AI写作简介: 在专业领域中,人工智能技术的进步正以前所未有的速度推动着写作行业的革新。当前,我们见证了生成式人工智能(AI)在文本产生领域的广泛应用,其对提升创作效率和拓展创意边界的贡献是显著的。以…

10秒以上无错误!猫态量子比特稳定性达到新水平

内容来源:量子前哨(ID:Qforepost) 文丨 浪味仙 排版丨沛贤 深度好文:1200字丨5分钟阅读 摘要:与涉及超导电路的其他量子比特设计相比,使用猫态量子比特可能会“将用于纠错的量子比特数量减少到…

国外子公司与国内母公司数据文件传输解决方案

在全球化商业运作中,企业常常面临一项关键挑战,即如何实现快速、安全的跨国文件交换。尽管传统的跨国文件传输手段在某些方面带来了便捷,但在处理大型文件时却暴露出其局限性。小编将带大家来分析这些传统方法的不足,并展示镭速为…

5.9学习计划

生成Grove地区osgb筛选IceSat2数据比对GPS数据 leetcode复习5.8 finleetcode新做4道fin数据链路层到2.4复习物理层,看小节 JVM面试题看完 数据链路层以帧为单位传输和处理数据 GCS_WGS_1984 和 WGS_1984_UTM Zone 43S 是两种不同的坐标参考系统(CRS&…

Python专题:十、字典(1)

数据类型:字典,是一个集合性质的数据类型 字典的初始化 字典{关键字:数值} 新增元素 修改元素 字典元素访问 字典[关键字} in 操作符 字典关键字检测 字典元素遍历 ①遍历关键字

JavaWeb--13Mybatis(2)

Mybatis(2) 1 Mybatis基础操作1.1 需求和准备工作1.2 删除员工日志输入参数占位符 1.3 新增员工1.4 修改员工信息1.5 查询员工1.5.1 根据ID查询数据封装 1.5.3 条件查询 2 XML配置文件规范3 MyBatis动态SQL3.1 什么是动态SQL3.2 动态SQL-if更新员工 3.3 …

Disk Doctor for Mac 免激活版:数据安全守卫者

数据丢失是每个人都可能遇到的问题,但Disk Doctor for Mac能让这个问题迎刃而解。这款强大的数据恢复软件,能迅速找回因各种原因丢失的数据。 Disk Doctor采用先进的扫描技术,能深入剖析磁盘,找到并恢复被删除或损坏的文件。同时&…

如何快速实现Java发送邮件功能?

如何使用JAVA发送邮件&#xff1f;&#xff08;不做过多文字解释&#xff0c;详细说明请看代码注释&#xff09; 一&#xff0c;引用相关pom二&#xff0c;实现代码&#xff08;代码参考图片内容&#xff09;三&#xff0c; 接收邮件 一&#xff0c;引用相关pom <dependency…

三级综合医院微信预约挂号系统源码,PC后台管理端+微信公众号+支付宝小程序全套源码

智慧医院预约挂号系统&#xff0c;微信医疗预约挂号小程序源码&#xff0c;实体医院预约挂号支付系统源码 本系统主要面向中大型的医疗机构&#xff0c;适用于各级公立和民营医院&#xff0c;可对接院内his、lis、pacs系统。 PC后台管理端微信公众号支付宝小程序 系统支持当日…

建发弘爱 X 袋鼠云:加速提升精细化、数字化医疗健康服务能力

厦门建发弘爱医疗集团有限公司&#xff08;简称“建发弘爱”&#xff09;创立于2022年&#xff0c;是厦门建发医疗健康投资有限公司的全资子公司&#xff0c;专业从事医疗健康领域的医疗服务。 建发弘爱通过医疗、健康及产业服务三大板块&#xff0c;为百姓提供医疗和健康全生…

Docker Compose常用命令与属性

大家好&#xff0c;今天给大家分享Docker Compose的常用命令&#xff0c;以及docker-compose文件的属性。Docker Compose 是一个用于定义和运行多容器 Docker 应用应用的重要工具。它通过一个配置文件&#xff08;docker-compose.yml&#xff09;来详细定义多个容器之间的关联、…

营销管理新突破,店匠科技与TikTok Shop携手深化合作

在全球化浪潮与数字化趋势的推动下,跨境电商已成为众多商家追求增长的新高地。TikTok Shop美国小店(TTS)以其庞大的用户基础和市场规模,成为商家们竞相入驻的热门平台。店匠科技(Shoplazza)作为领先的独立站SaaS服务商,近日宣布与TikTok Shop达成深度合作,为商家带来一站式订单…

docker端口映射成功,docker端口不生效的问题解决,外界无法访问docker映射端口

docker端口映射不生效的问题解决 问题 使用docker run -p 88848:8848后&#xff0c;显示容器启动正常&#xff0c;并且使用docker logs –f xxx能够看到容器可以正常启用&#xff0c;docker ps 可以看到容器启动成功&#xff0c;并且端口已经映射,但是在浏览器访问相关地址&am…