居说谷歌新认的干儿子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. android中的 Toast 和 AlertDialog

    Toast 一般用来显示一些不需要用户操作的提示信息,举个栗子: public void toast(String msg) { //---创建并设置显示的内容和显示时长 Toast toast = ...

  2. 在mysql 5.6的环境下修改生产环境的表结构(在线ddl) ----工具pt-osc

    随着需求的变化越来越快,在线修改表结构变得越来越需要. 在mysql5.6以前,mysql的修改表结构操作会锁表,这样就会造成开发人员或者DBA修改表结构必须要等到凌晨流量谷值或者停服修改.这样必定会 ...

  3. Nodejs核心模块

    (1)全局对象 在浏览器JS中,通常window是全局对象,而nodejs中的全局对象是global,所有全局变量都是global对象的属性. 在nodejs中能够直接访问到的对象通常都是global ...

  4. python库安装(numpy+scipy+matplotlib+scikit_learn)

    python安装好后,库安装走了很多弯路,查了很多资料,终于安装成功,并且保存了该文章的地址,分享给大家 本人电脑windows 7,64位系统,安装的Python是3.5的,因此下载的库也是对应版本 ...

  5. java接收数据接口

    1.数据接收接口: 这个可以考虑最简单的Servlet方法,而且效率较高: import java.io.PrintWriter;import java.text.SimpleDateFormat;i ...

  6. 安卓和iOS移动APP开发设计应该考虑哪些问题

    应该考虑哪些问题 现在用移动设备上网的用户越来越多,企业也可以从移动APP端挖掘潜在用户,想要设计好一款移动APP,我们需要考虑哪几个问题呢? 首先 我们应该先确认清楚企业的移动互联网战略目标是什么? ...

  7. ajax从新浪获取实时股票数据

    最近在给公司做一个报表展示,然后领导要求上面加上一些股票的实时数据展示. 一开始同事给我一个聚合数据的网址,说从这上面可以获取到.我一看,哟呵,API接口什么的都提供好了,确实方便.然后想用的时候才发 ...

  8. 什么是体数据可视化(Volume data visualization)?及体绘制的各种算法和技术的特点?

    该文对体数据进行综述,并介绍了体数据的各种算法和技术的特点. 前言 由于3D数据采集领域的高速发展,以及在具有交互式帧率的现代化工作站上执行高级可视化的可能性,体数据的重要性将继续迅速增长. 数据集可 ...

  9. 自定义list排序

    使用扩展方法OrderBy,OrderByDescending,效果优良. 实现代码如下: private static void SortByExtensionMethod() { List< ...

  10. grunt轻松入门

    项目目录,js源文件 gruntest Gruntfile.js package.json -- js ext community_plugin.js glogin_frm_cover.js iLog ...