关于kotlin

缘起-为什么写这篇博客

之前并未对kotlin这个语言有过了解(毕竟在上刘钦老师的课前没有写过安卓应用),最早看到这个名字,还是5月份知乎的timeline上看到相关问题如何看待 Kotlin 成为 Google 正式支持的 Android 开发一级编程语言?
“在5月17日(北京时间5月18日凌晨)的Google I/O 2017 Keynote上, 谷歌宣布,将Kotlin语言作为安卓开发的一级编程语言……Kotlin由JetBrains公司开发,与Java 100%互通,并具备诸多Java尚不支持的新特性。“
当时匆匆浏览了各路大V的答案,只感觉加州甲骨文律师所招了不少怨(笑),不仅有程序员对java语法颇有微词,也惹得谷歌寻求jetbrain的合作。
而后刘老师便发布了博客作业的DDL,此时不了解kotlin,更待何时?

初探kotlin-与java的对比

作为一个懒人,了解kotlin的第一步并没有去直接看Basic Syntax - Kotlin Programming Language,而是选择From Java to Kotlin。直接复制文档内容过于敷衍,也很无趣,我列举一下自己的感受:

  1. 没有类型声明,变量统一只用val声明,具体类型由赋值的类型决定,不过,当没有赋值时,就必须声明类型了,这样的设计稍比java复杂,但是减少了码农的一点负担。
  2. 相比于java,对null的处理更为优秀。在阅读java与kotlin的对比时,我只是觉得kotlin利用符号?或者!!来进行null检查更为简洁,而在阅读了Kotlin 作为 Android 开发语言相比传统 Java 有什么优势? - 回答作者: 覃超这个答案后,才进一步理解了kotlin为什么这样设计,简单的说,在检查和处理 nullable 变量的时候,Kotlin 更加有效。

  3. 由于第二条的原因,在 java中的三元运算d=(a?b:c)在kotlin里只能换一种方式实现,即

val text = if (x > 5)"x > 5"else "x <= 5"

简言之变成了一种特别的条件语句-虽然这就是这种三元运算的原本含义。个人感觉比较啰嗦。
4. 位运算符没有使用传统的&、|或者》,而是英文简写,如and、or或shr,由于我对kotlin的了解还不够深,暂时还不知道省下来的这些符号用在何处。
5. 使用更易理解的语法,比如 is 取代 instanceof,用as取代类型转换

String text = (String) other;//这是java
val text = other as String//这是kotlin

用下面这种方式描述区间

if(x >= 0 && x <= 10 ){}//这是java
if (x in 0..10) { }//这是kotlin

6.相比于java,有更智能的类型转换

if(a instanceof String){final String result = ((String) a).substring(1);
}//这是javaif (a is String) {val result = a.substring(1)
}//这是kotlin

7.效率远超switch的when语句
这是网上找到的代码例子:

fun testWhen(int: Int) {when(int) {in 10 .. Int.MAX_VALUE -> println("${int} 太大了我懒得算")2, 3, 5, 7 -> println("${int} 是质数")else -> println("${int} 不是质数")}
}fun main(args: Array<String>) {(0..10).forEach { testWhen(it) }
}
输出如下:
0 不是质数
1 不是质数
2 是质数
3 是质数
4 不是质数
5 是质数
6 不是质数
7 是质数
8 不是质数
9 不是质数
10 太大了我懒得算

和 JAVA 中死板的 switch-case 语句不同,在 when 中,我们既可以用参数去匹配 10 到 Int.MAX_VALUE 的区间,也可以去匹配 2, 3, 5, 7 这一组值,当然我这里没有列举所有特性。when 的灵活、简洁,使得我们在使用它的时候变得相当轻松(和 JAVA 的 switch 对比的话)

总的来说,kotlin与java相似却又不同的地方还有很多,在此就不赘述了,以免有凑字数嫌疑。

其他零零碎碎的东西

比如,对于kotlin的空值安全,有人认为String 和 String?是两种不同的类型。String 已经确定是不会为空,一定有值;而 String?则是未知的,也许有值,也许是空。在使用对象的属性和方法的时候,String 类型的对象可以毫无顾忌的直接使用,而 String?类型需要你先做非空判断。
“两种不同类型“的认识似乎有点极端,不过暂时没有找到能反驳的理由。

kotlin一点摸索相关推荐

  1. Entity framewrok (linq to entity)查询优化的一点摸索

    对于linq to entity 生成的复杂sql语句相信已经困扰大家很久了,本人也是.从接触实体框架到现在,一直都是边学边用,用啥学啥,没有系统的学习过.同时所接触项目也对性能方面没什么要求,所以本 ...

  2. 标准情况下的最优方案与魔鬼赛道

    ➤01 一封来信 尊敬的卓老师: 您好! 我是XYZ智能车团队的成员,在今天刚刚参加了安徽省省赛,我对于比赛场地有很大的质疑,整场比赛不规范,主办方学校队伍多次(三次以上)重新开始比赛就不说了,这一次 ...

  3. 怎么把代码放图片里面进行注入_【5025Bridge V1.0】(三)连接、选座、准备的代码搭建...

    (三)连接.选座.准备的代码搭建 [概览]在这篇文章中,我主要使用信号机制实现了服务器和客户端之间的通信,并自己摸索着做出了选座的界面,初步设计并构建了各种按钮之间逻辑.此文多图,纯文字量约10000 ...

  4. SQL 注入详解扫盲

    实习期间的主要工作还是研究 WEB 安全,编程语言是 Python,常用到正则表达式,对 HTTP 的协议也非常清晰. 刚过来的时候,研究的主要是 SQL 注入,因为之前没有搞过安全,所有费了好长一段 ...

  5. [原创]Fluent NHibernate之旅

    ORM大家都非常熟悉了吧,我相信也有很多朋友正在用自己或者一些公开的框架,而最常用而且强大的,非Hibernate了(Net中为NHibernate),网上的文档非常多,不过在博客园中,介绍NHibe ...

  6. 减少C++编译时间的方法

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105112643 减 ...

  7. GPU迎来投资热潮 退潮后谁在裸泳

    近期,数家GPU设计公司获得资本青睐,摩尔线程完成数轮投资获得数十亿元,无独有偶,壁仞科技宣布完成总额11亿元的A轮融资,沐曦集成电路宣布完成近亿元天使轮融资,登临科技宣布完成A+轮融资.另外,天数智 ...

  8. Fluent NHibernate之旅

    ORM大家都非常熟悉了吧,我相信也有很多朋友正在用自己或者一些公开的框架,而最常用而且强大的,非Hibernate了(Net中为NHibernate),网上的文档非常多,不过在博客园中,介绍NHibe ...

  9. WPF ComboBox下拉绑定Treeview 功能的实现

    因为项目需要,接触到这个功能点,借助网络还有自己的一点摸索,实现了这个功能.相关代码如下: XAML部分的代码: <ComboBox Grid.Row="0" Grid.Co ...

最新文章

  1. 远程协助软件开发_这是我从事远程软件开发人员工作的主要技巧
  2. 灰度重心法原理与实现
  3. 计算机游戏的英文单词,关于游戏的英语词汇
  4. 成功解决AttributeError: ‘str‘ object has no attribute ‘decode‘
  5. Kubernetes 与 OpenYurt 无缝转换(命令式)
  6. 【蓝桥杯】Python自带编辑器IDLE的使用教程
  7. 直流电机 步进电机 伺服电机
  8. Java 字符串操作的总结1(转载)
  9. OMNet++新建工程及运行
  10. 牛逼!支付宝高级Java三面题目:线程锁+事务+雪崩+Docker等
  11. 电脑黑屏的原因有哪些
  12. 大厂面试常问的机器学习,计算机视觉怎么学?详细指南来了!
  13. 最新出炉程序猿使用说明书
  14. 小型工厂企业网站究竟该怎么做好SEO优化,从而带来更多订单?
  15. HTML5 webSQL查看表结构
  16. 局域网内和局域网间的通信(交换机与路由器)
  17. SIM卡被猫吃了,1860电话录音
  18. 00后必看:如何在互联网就业寒冬和疫情的双面夹击下找到心仪工作
  19. pycharm查找替换快捷键
  20. Linux 学习目录

热门文章

  1. Python - 使用python-opencv裁剪原视频为与视频高同宽的视频
  2. 微信公众号h5页面禁止用户调整字体大小
  3. 云游戏的2022:破局、新生、元宇宙
  4. 关于鸿蒙系统传统文化的作文,【热门】传统文化作文汇编6篇
  5. 【CTF】【渗透】【msf】三、绕过杀毒软件技巧
  6. GDUT 2.25 D
  7. 电商后台设计——搜索
  8. MATLAB超级实用的简单图像处理代码大全
  9. GMM-HMM孤立词识别
  10. 计算机ccf专业,中国计算机学会(CCF)简介--科技--人民网