Kotlin之类型系统

news/2024/11/17 0:34:43/

Kotlin之类型系统

可空类型

  • 在任何类型后加“?”表示该变量可为空。
  • val a: Int? = null

安全的调用

  • 使用“?.”进行安全调用。
  • 实现方式:仍旧使用if判空。
  • student?.name

合并运算符

  • 使用“?:”运算符。
  •  val result = a ?: 1 
    

非空断言

  • 使用“!!”操作符。
  • student!!.name

let

  • 调用某个对象的let函数,该对象会作为函数的参数,在函数块内可以通过it指代该对象。返回值为函数块的最后一行或指定的return表达式。

类型检查

  • 使用“is”关键字。
  • 实现方式:仍旧使用Java的instanceof。
  • 相当于Java的instanceof。

强制类型转换

  • 使用“as”关键字,如果类型可空,使用“as?”。

Any:非空类型的根类型

  • 它和Java的Object根类相似,它是Kotlin中所有非空类型的根类。
  • 实现方式:当在Kotlin的函数中使用Any时,它会被编译成Java字节码中的Object。

Nothing:类型层次结构的最底层

  • 它是没有实例的类型。
  • 它只包含一个值:null,因此,可以使用null作为任何可空类型的值。
  • Nothing类型的表达式不会产生任何值。任何返回值为Nothing的表达式之后的语句都是无法执行的。
  • kotlin中的流程控制中与跳转相关的表达式如return、throw等,它们的返回值都是Nothing。

数组

  • 使用arrayOf函数,对应Array类型。
  • 使用intArrayOf函数,对应IntArry类型,相当于Java的int[],但是IntArry与上面Array类型并不存在关系。
  •  val intArr = arrayOf(1, 2, 3)val intArr1 = intArrayOf(1, 2, 3)
    

泛型

  • 泛型的优点:
    • ①类型检查:能在编译时就检查出错误;
    • ②语义化:比如声明一个List<Dog>就可看出这是一个存储狗狗对象的集合;
    • ③自动类型转换:获取数据时不需要进行类型转换;
    • ④通用性:能写出更加通用的代码。
  • 使用arrayListOf()方法创建一个ArrayList。
    • 这里不用显式申明泛型参数的类型。
      • val intArrayList = arrayListOf(1, 2, 3)
    • 当然也可以显示的申明。
      • val intArrayList = arrayListOf<Int>(1, 2, 3)
  • 泛型上界:
    • 在Java中,使用extends关键字进行定义,如:T extends Fruit
    • 而在Kotlin中,也仅仅换成对应的继承符号“:”而已,T: Fruit

http://www.ppmy.cn/news/754219.html

相关文章

是德频谱仪N9020A维修报错维修-安泰维修

近期&#xff0c;有客户送来一台是德N9020A频谱仪&#xff0c;故障表现为报错。工程师接到仪器后&#xff0c;对其进行故障检测。 经过工程师检查后&#xff0c;开机发现自检失败&#xff0c;报错LO Unlock&#xff0c;无基线。 经检测&#xff0c;仪器前端板损坏&#xff0c;造…

【维修类别】

需求分析 维修类别功能界面如下&#xff1a; 维修类别大致就是故障种类&#xff0c;它是丛属班组的&#xff0c;目前系统中在用的班组只有两个【电仪和设备】 除了从属于班组&#xff0c;维修类别还和具体的设备种类有关&#xff0c;&#xff08;比如加弹机&#xff0c;染色机…

维修行业迫切需要O2O?“报修一站通”寻遍上海为各类水货、无主、超保产品对接维修网点

以下文章转自 36氪 http://www.36kr.com/p/205702.html&#xff0c; 同时也可以向一直关心我的朋友解释下过去一年多我的去向。&#xff1a;&#xff09; 城市发展给我们带来了现代化的生活&#xff0c;同时也带来了某些不便。过去手机坏了、冰箱需要加氟时&#xff0c;一出家…

售后服务系统预约工单方便客户报修?

随着生活水平的不断提高&#xff0c;人们的生活方式也在发生着改变&#xff0c;越来越多人喜欢使用电脑或者手机等数码产品。而当遇到故障需要维修的时候&#xff0c;许多人都是通过电话或者网上联系相关维修公司&#xff0c;但因为缺乏经验和能力&#xff0c;有时因为遇到故障…

免费4s店汽车保养维修记录查询的方式

二手车已经越来越多的走进大家的视野&#xff0c;年轻人也不局限于购买新车&#xff0c;反而对性价比更高的二手车情有独钟。那么二手车和汽车4S维修保养记录有什么关系呢&#xff1f;我作为一个多年经验的二手车商来和大家透露一点小秘密。下图&#xff0c;一般的保养记录差不…

Django的数据库操作的游标(cursor)方法

在Django中&#xff0c;数据库操作的游标方法是一种直接与数据库进行交互的方式&#xff0c;它提供了更底层的数据库访问能力。通过游标方法&#xff0c;你可以执行原始的SQL查询、事务处理以及处理大量数据等操作。 Django的数据库游标方法主要通过connection对象来执行&…

[Mybatis注解版的 一对一和一对多实现过程 ]

目录 &#x1f382;前言: &#x1f382; Mybatis也支持使用注解的方式实现一对一和一对多的关联查询。下面是注解实现的示例代码&#xff1a; 一对一关联查询&#xff1a; &#x1f382;用户实体类&#xff08;User&#xff09;&#xff1a; &#x1f382;用户详情实体类&…

苹果手机点击输入框页面自动放大

问题描述 一个项目里用了bootstrap的日期插件bootstrap-datetimepicker&#xff0c;在显示日期的那个input输入框被点击时在苹果手机上页面会被放大&#xff0c;该input输入框type等于text。后来发现忘记加了一些东西。 解决办法 一开始我的meta标签是这样的 <meta name…