居说谷歌新认的干儿子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的官网或者网友翻译的中文文档

官方文档地址:http://kotlinlang.org/docs/reference/

中文翻译地址: https://github.com/huanglizhuo/kotlin-in-chinese

kotlin语言使用初体验(一)的更多相关文章

  1. go语言的初体验

    分享最近学习 Go 语言的心得和体会,适合有编程基础的人,因为这里只做经验性的总结概述,不做基础教学的入门知识讲解,如果想要学习编程语言的基础知识,请出门左转进入官方文档,查看基础教学文档. Go 概 ...

  2. SpringCloud初体验:五、Sidecar 将 PHP 这类非 Java 生态语言的服务接入 Spring Cloud

    先起一个 Sidecar 服务,一个PHP服务一个应用,和PHP服务部署在同一台机子,通过 localhost 访问,这样就解决了网络开销,相当于本地进程间调用 Sidecar 服务比较简单, 1.这 ...

  3. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  4. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  5. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  6. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...

  7. protobuf初体验

    概念介绍 Protocol buffers 是google公司的与语言无关.与平台无关的.可扩张的为序列化话结构数据,就像xml一样,办事更加的小巧.快速.简单.Protocol buffers 目前 ...

  8. python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨

    python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...

  9. Scala 深入浅出实战经典 第66讲:Scala并发编程实战初体验

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

随机推荐

  1. MongoDB--在windows下的安装过程及基本配置

    这几天在做一个简单的后台博客系统,数据库用到了 MongoDB ,虽说官方的文档比较全,但是对于我一个英语一般的人来说,或多或少在配置的时候出现了一些问题,总结了一下在安装及创建服务的过程 Mongo ...

  2. DataTables源码分析(一)

    DataTables源码分析 写在前面 作为一名常年奋战在java世界中的程序猿,当我接触到现在所谓的前端技术时,内心其实是崩溃的.因为,前端的技术给我的第一个感觉就是"乱",这里 ...

  3. less补充函数

    1.ceil():向上取整2.floor():向下取整3.percentage():将浮点数转换成百分比3.round():四舍五入4.sqrt():平方根5.abs():绝对值6.pow():乘方运 ...

  4. 网站与域名知识扫盲-DNS

    域名概述 域名的概念 IP地址不易记忆 早期使用Hosts解析域名 主机名称重复 主机维护困难 DNS(Domain Name System 域名系统) 分布式 层次性 域名空间结构 根域 组织域[. ...

  5. ios url网址相关问题解说

    问题1:ios网址中存在汉字的情况,需要GB_18030_2000编码方法如下: // 汉字转编码 + (NSString *)changeChineseWithEncodingGB_18030_20 ...

  6. Python中字符串拼接的三种方式

    在Python中,我们经常会遇到字符串的拼接问题,在这里我总结了三种字符串的拼接方式:     1.使用加号(+)号进行拼接 加号(+)号拼接是我第一次学习Python常用的方法,我们只需要把我们要加 ...

  7. js距离现在时间计算

    <script language="javascript"> var biryear = 2015; var birmonth = 12; var birday = 1 ...

  8. JS - A*寻路

    算法核心 A*估值算法 寻路估值算法有非常多:常用的有广度优先算法,深度优先算法,哈夫曼树等等,游戏中用的比较多的如:A*估值 算法描述 对起点与终点进行横纵坐标的运算 代码实现 start: 起点坐 ...

  9. json数据渲染表单元素出现的问题

    解析页面表单元素 parseForm: function () { var data = {}; $(this).find('input').each(function () { switch ($( ...

  10. jquery中is()函数

    is(expr)函数判断当前Jquery对象所匹配的元素是否存在.只要其中一种符合,就返回 true,否则返回 false. 如果 expr是个字符串,既视为Jquery的选择器,用于表示选择的元素. ...