Kotlin 基础教程一

 

Kotlin 基本数据类型

Java           |    Kotlin

byte                 Byte

short                 Short

int                   Int

long                Long

float                Float

double                Double

boolean                Boolean       

char                Char

数据类型之间可以相互转化 比如

var index = 10       index.toLong,index.toDouble ...等

声明变量一般为  var 赋值变量  val 表示常量

可以显示声明类型:

var name : String = "Csdn"

也可以隐式声明:

var name = "Csdn"

val 修饰的一般为常量 不可改变  例如:

val name = "Android"

name = "Hello" 就会报错

修饰方法 一般为fun 例如:

fun getNumber(index : Int) : Int 

getNumber(Index : Int) 代表传入一个Int的值 而函数中 : 后面的则为返回类型

无返回类型一般不用写,也可以写Unit

继承和实现:

Java 继承是extends  而Kotlin就是  : 

比如: class A extnds B ,Kotlin则是class A : B ()

实现 Java是implements 而Kotlin  则是 直接实现的类的方法或者其他的属性

Kotlin特性之空安全

比如:private var name : String 这样写是报错的 因为没有初始化 为Null

如果可能需要为null或者避免检验  可以这样写: private var name : String? = null

Java避免空属性可以用注解 @NonNull @Nullable

kotlin中如果声明可为空 也就是 var name : String? = null 调用时会报错 

如果强行调用 有两种方式:

安全调用value?.xxx 用?安全调用 为空则不调用

value!!.xxx强行调用,可能会报空指针

(变量后面有感叹号!代表非Kotlin声明的 比如是Java 等)

延迟初始化之 lateinit

lateinit 修饰的不能有初始值

比如 val lateinit name : String

类型判断

如果不确定数据类型 java中则是 instanceof 而Kotlin中则是 is

强制类型转换:

java中则是  A a = (A) value ,kotlin则是 as  

获取class

java获取class 比如Main.class, value.getClass

kotlin获取为  Main::class ,获取Java的class  则是 Main::class.java 

创建实例:

java中 通过new 创建 调用有参或者无参构造

kotlin中则是直接 类名() 参数  比如Intent, java:new Intent(xx,xx);kotlin Intent(xx,xx)

get/set

kotlin 声明属性时候默认会创建get/set 例如 :

var name : String? = null

        get(){

return field

}set(){

       field = name

}

构造器

constructor 函数 分为无参数:

constructor(){

}

有参数:

constructor(name : String){

}

@JvmField

如果成员变量中使用@JvmField则生成一个public的成员变量 不会生成get set

类的继承

java 所有的类 默认继承Object

Kotlin 默认 Any (更精简)

java void 对应kotlin Unit

构造器相互调用

单参数调用多参数 使用this(参数1,参数2...)

constructor(context : Context) this(context,null)

数组:

java中通过 []声明一维和二维 比如 int [] xx

kotlin则是 通过 arrayOf 比如 val numberList = arrayOf(1,2,3) 这种写法会自动装箱,造成不必要的内存开支,基本数据类型 比如int  可以使用intArrayOf 比如 val intArr : IntArray = intArrayOf(1,2)

intArrayOf  FloatArrayOf 等

数组长度表示:在Java中 数组[ ] 长度表示为length  而Kotlin 则是 size

静态函数

java使用 static

kotlin : 1 定义在函数 比如 fun getMax() 通过导入包调用函数 称为顶级函数 类似于Java XXX.getMax()

object

kotlin 可以通过object 声明一个类,这个类中的变量和函数会变成全局的

并不是静态函数,而是自动创建这个类的单例对象,然后通过单例对象访问这个类

如 object V {} 这里面声明的函数是静态的 可以V.xxx调用,如果在Java中调用v的函数

则需要V.INSTANCE.getXXX()

companion object 静态变量修饰

类中的单利对象 比如 class Rock : A {

companion object{

        private lateinit var index : Value?

        fun getValue() : Value{

                return value

        }

}

fun setValue (value : Value){

        value = this;

}

}

可以在object声明的函数方法中加入@JvmStatic 声明为静态函数

@file

例如在类的开头:@file:JvmName("xxx") 作用对象为文件

$

简化字符串模板可以省略拼接字符串+ 比如 var name : String = "Key$name"

object : params 等同于创建一个内部类

in

在xx 区间 

在Java中表示 if (number > 200 && number < 600)

kotlin if (number in 200..600) 区间范围

when

类似于java的swith 同时支持表达式 比如 if xx else if xx else if xx

可以用when (code )  in 200 -> { } in 300 ->{} else ->{}

接口

也是用interface 定义 

抽象

也是用abstract定义,构造器调用父类使用 : super(xxx) 

枚举

使用 enum class 定义 (继承Annotation)

使用enum进行定义enum class Type{ A {} abstract fun type()}

fun

用于修饰方法

编译期常量 const

在 companion object{

        const val NAME = "name"

}

引用外部对象属性

java 通常是类名.this.变量名

kotlin this@外部类类名.成员以及变量

创建集合 

java  new ArrayList

kotlin : ArrayList 也可以用 arrayListOf创建 或者 MutableList

 

listOf / List 不支持修改 MutableList支持修改 -----Map HashMap/MutableMap同理

遍历:

foreach 

java : for ()

kotlin in  for (value : Value in list)

静态内部类

internal 可进行修饰符,当前模块可见

inner 修饰内部类 但是不能存在compaion  object 此对象

kotlin   在普通类和方法中默认是final 修饰的 否则需要用abstract / open /override 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

php怎么实现拼图功能,照片拼图效果怎么做 将一张照片制作成拼图的效果

最近的电影少年的你上映几天了&#xff0c;该电影是校园欺凌题材&#xff0c;听说剧情的深度可以给观众带来沉思&#xff0c;看到消息说今天这部电影也是突破六亿票房&#xff0c;也是厉害的了&#xff0c;找个时间真想去看看呢&#xff01;好啦&#xff0c;回归主题&#xff0…

Gradio:交互式Python数据应用程序的新前沿

一、说明 什么是Gradio以及如何使用Gradio在Python中创建DataApp或Web界面&#xff1f;使用 Gradio 将您的 Python 数据科学项目转换为交互式应用程序。 摄影&#xff1a;Elijah Merrell on Unsplash Gradio是一个Python库&#xff0c;允许我们快速为机器学习模型创建可定制的接…

controller层,service层,mapper层,entity层的作用与联系。

一. controller层 controller层是用来接受前台数据和返回页面请求信息的&#xff0c;Controller层是不允许直接操作数据库的&#xff01;它就像一个服务员&#xff0c;哪桌客人需要点菜了&#xff0c;就喊一声服务员&#xff01; 对应的&#xff0c;外界需要完成什么样的业务&…

“一日之际在于晨”,欢迎莅临WAVE SUMMIT上午场:Arm 虚拟硬件早餐交流会

8月16日&#xff0c;盛夏的北京将迎来第九届WAVE SUMMIT深度学习开发者大会。在峰会主论坛正式开启前&#xff0c;让我们先用一份精美的元气早餐&#xff0c;和一场“Arm虚拟硬件交流会”&#xff0c;唤醒各位开发小伙伴的开发魂&#xff01; 8月16日&#xff0c;WAVE SUMMIT大…

雷军爆料骁龙855新机 液冷3.0+跑车造型 媲美iPhone

目前各大手机厂商都在着手发布骁龙855新机&#xff0c;个别厂商已经抢先发布了&#xff0c;最受国内用户关注的自然还是小米9了&#xff0c;不过近日&#xff0c;雷军在个人微博爆料&#xff0c;又一款骁龙855新机将会在下周一&#xff0c;也就是3月18日发布剧情介绍。 这款手机…

互联网专家资源分享(二)

1. 换位思考 沈阳 前台页面处理&#xff0c;利用CSS和DIV构建页面。面向在校毕业生或者刚参加工作人员 divcss页面处理html控件解析&#xff0c;数据处理&#xff0c;sql语句构造 2. moosefs调优 济南 tcp/ip&#xff0c;精通tcp/ip协议。 精通linux下的tcp/ip开发。&#…

WEBSHELL 提权方法总结

最全的 WEBSHELL 提权方法总结 来到的请留个脚印&#xff0c;谢谢 在得到了一个 Webshell 之后&#xff0c;如果能进一步利用系统的配置不当取得更高的权限&#xff0c;一直是广大黑友们所津 津乐道的话题&#xff0c;也是高手和菜鸟间最大的区别。本文将从一个大角度总括当前…

打破智能手机消费格局的将不是另一台智能手机,而是游戏

文|佘凯文 来源|智能相对论&#xff08;aixdlun&#xff09; 云游戏的概念&#xff0c;在游戏圈越来越热。从微软的Project xCloud的云游戏平台、到谷歌的Project Stream云游戏服务、再到索尼基于PS4的云游戏服务以及腾讯也宣布与英特尔联手推出云游戏平台“腾讯即玩”&#…

游戏市场阴影下的游戏手机厂商,和他们无法触碰的未来

出于以版号为主的一系列问题&#xff0c;中国手游市场遇冷是近一年以来的显著现象。根据App Annie的调查显示&#xff0c;在过去两年里&#xff0c;全球App的用户总使用时长增长了50%&#xff0c;而游戏所占比重一直稳步上升&#xff0c;但中国市场的游戏用户却支出锐减&#x…

雷军亲自捧场,双液冷游戏手机演绎“暴力美学”

10月23日&#xff0c;黑鲨科技最新旗舰黑鲨游戏手机Helo在北京惊艳上市。黑鲨科技创始人兼CEO吴世敏&#xff0c;小米集团创始人、董事长兼首席执行官雷军&#xff0c;中国文化娱乐行业协会会长刘金华、京东商城通讯事业部总裁陈婷、南昌金开集团董事长胡顺明以及优点科技创始人…

雷军亲自站台,游戏手机能否成为市场增长新引擎?

从2017年开始&#xff0c;智能手机市场的表现便让不少人大跌眼镜。 Canalys发布的统计报告显示&#xff0c;2017年中国智能手机市场年总出货量为4.59亿部&#xff0c;较2016年下跌4%&#xff0c;这也是中国首次出现智能手机年总出货量下滑的情况。 而近日中国信息通信研究院发布…

黑鲨的“游戏”人生:寻找手机红海之中一抹蓝

手机厂商的日子并不好过。 据第三方机构发布数据&#xff0c;2019年上半年&#xff0c;国内手机市场出货量仅为1.86亿部&#xff0c;同比下降5.1%&#xff0c;增量时代已过&#xff0c;行业进入存量时代&#xff0c;用户逐渐向头部企业集中。被挤到墙角的手机厂商&#xff0c;…

神仙打架!鲁大师发布2021半年报,黑鲨游戏手机4 Pro夺冠!

随着鲁大师2021年半年报发布&#xff0c;黑鲨游戏手机4 Pro的性能也被大家清晰的了解到。在本次鲁大师2021年半年报中&#xff0c;黑鲨游戏手机4 Pro夺得了手机综合性能榜的冠军宝座&#xff0c;成为名副其实的性能之王&#xff01; 黑鲨游戏手机4 Pro作为主打游戏性能的旗舰机…

【数据结构与算法】稀疏数组

文章目录 一&#xff1a;为什么会使用稀疏数组1.1 先看一个实际的需求1.2 基本介绍1.2.1 稀疏数组的处理方法1.2.2 数组的举例说明1.2.3 应用实例1.2.4 整体思路分析二维数组转稀疏数组的思路稀疏数组转原始的二维数组的思路 二&#xff1a;代码实现2.1 创建一个原始的11*11二维…

一文盘点 Zebec 生态的几个利好预期

Zebec Protocol 是目前商业进展最快的流支付体系&#xff0c;也是推动流支付向 Web2 世界发展的主要生态。目前&#xff0c;其已经与包括 Visa、Master 等支付巨头展开了合作&#xff0c;以推出银行卡的方式进一步向金融发达地区推出 Zebec Card 以拓展业务&#xff0c;前不久其…

人大金仓三大兼容:Oracle迁移无忧

企业级应用早期的架构模式是C/S&#xff08;Client/Server&#xff09;模式&#xff0c;Client做人机交互逻辑的呈现&#xff0c;Sever做业务计算逻辑的实现。这就类似餐馆的运作模式&#xff0c;Client是前台的服务员提供点菜和上菜服务&#xff0c;而Server则是后厨完成菜品的…

windows7专业版_windows7专业版和旗舰版的区别

&#xff37;indows7专业版和旗舰版有什么区别&#xff0c;二者有什么不同&#xff0c;相信有很多小伙伴还是不太了解的&#xff0c;下面就来为大家解答一下&#xff37;indows7专业版和旗舰版的区别&#xff1a; &#xff37;indows7专业版和旗舰版的区别 1、Windows7专业版&a…

【学习日记】【FreeRTOS】手动任务切换详解

前言 本文是关于 FreeRTOS 中实现两个任务轮流切换并执行的代码详解。目前不支持优先级&#xff0c;仅实现两个任务轮流切换。 一、任务的自传 任务从生到死的过程究竟是怎么样的呢&#xff1f;&#xff08;其实也没死&#xff09;&#xff0c;这个问题一直困扰着我&#xf…

服务器系统2012r2升级专业版,Windows Server 2012 R2版本区别

慕工程0101907 Windows Server 2012 R2是最新的服务器版本Windows&#xff0c;于2013年10月18日发布。这是Windows 8.1的服务器版本&#xff0c;在2013年6月3日的TechEd北美公布。Windows Server 2012&#xff0c;Datacenter和Standard版功能相同&#xff0c;变化只有授权&…

win7家庭版和旗舰版区别_Win7 ultimate是什么版本?ultimate是什么意思功能区别介绍!...

Win7 ultimate是什么版本&#xff1f;ultimate是什么意思功能区别介绍&#xff01; 对于Win7系统很多朋友都会觉的是一款很好用的操作系统&#xff0c;Win7系统的版本有很多种&#xff0c;那么Win7 ultimate是什么版本&#xff1f;win7这么多版本又有什么区别呢&#xff1f; Wi…