居说谷歌新认的干儿子kotlin极为受宠,隐隐有替代Java在 android平台老大位置的趋势。kotlin有谷歌撑腰,加上自己的底子也厚,再之与Java无缝兼容,将来在流行的编程语言中占有一席之地是毫无疑问的事情。
我对于优势突出的编程技术总会产生莫名的兴趣,因此,在对konlin有了初步的了解以后就迫不及待跃跃欲试的想尝试一下,于是找了一件之前一直想做的事情趁这个机会用kotlin实现一下,即满足了自己的需求也体验了一把使用kotlin的滋味。
这个需求挺简单, 抓取某一个房地产网站每一天每个楼盘的成交价格数据并发送至我的邮箱。 程序实现的逻辑不复杂,总共一百多行代码。我把在写在这一百多行代码的过程中体会到的kotlin 和Java的差异和大家分享一下, 通过对比侧面的说明一下kotlin的优点
一
在Java中所有的代码都必须写在类里面,类是可运行程序的最小单元, 就算是最简单的输出hello world字符串, 也必须要声明一个类。而在konlin中则没有这种限制,可以直接新建一个文件,在文件的头部声明一个包,然后就可以直接编写函数了,而不必像Java一样必须要仪式性的声明一个类
比Java简洁的多,跟JavaScript比较相似
二
Kotlin有类型推断功能, 不必像Java一样在声明变量前必须指定冗长的类型名称。 图中标注的val关键字表示变量一但被赋值后就不能被修改,跟其它语言中的常量含意相同。如果需要定义可以修改值的变量则可以var关键替代val关键字。 这种声明变量的方式看似与JavaScript非常相似,但作用完全不同, JavaScript是动态类型语言, 声明的变量除非到了运行期,否则无法确定类型,这也就意味着无法通过编译器除错。而kotlin的这种写法则意味着语言具备类型推断功能, 定义变量看似无法确定类型, 但是假如你想访问变量类型中不存的成员时,则编译时会报错, 实质上它是把原本在变量前面的类型名称给隐藏起来了,但作用不变, 这样书写起来会方便很多。
三
省略了new关键字, 实例化对象时直接调用构造函数就可以了
旧时Java的写法
HttpGet get = new HttpGet(url);
kotlin的写法
val get = HttpGet(url)
四
数据类的get/set方法被属性访问的方式取代。 假如一个Java编写的类中的有getXXX和setXXX两个方法, 那么在kotlin中使用这个Java类中不必再去写getXXX和setXXX这样的代码, 直接通过obj.xxx和obj.xxx = "xxx"这样取值和设置值就可以了,kotlin编译器做了自动转换。
五
Kotlin支持if表达式
这种写法对简化代码和提高编码效率意义重大。
六
支持data class, 而不必像在Java为了定义一个数据实体而写一堆getXXX 和 setXXX方法。并且在传参时可以指定参数名称。 而在kotlin中声明的数据类, 在Java中使用时会自动生成一堆getXXX和setXXX方法
因为实现这个程序的代码量不多, 所以总结出来的kotlin语法特性并不完整, 但总体来说还是能表现出一些优于Java的特点, 之后关于使用kotlin的心德, 还是会持续更新的。 如果有同学迫不及待的想了解关于kotlin的详细语法知识,那么可以去浏览kotlin的官网或者网友翻译的中文文档