kotlin语言使用初体验(一)
居说谷歌新认的干儿子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语言使用初体验(一)的更多相关文章
- go语言的初体验
分享最近学习 Go 语言的心得和体会,适合有编程基础的人,因为这里只做经验性的总结概述,不做基础教学的入门知识讲解,如果想要学习编程语言的基础知识,请出门左转进入官方文档,查看基础教学文档. Go 概 ...
- SpringCloud初体验:五、Sidecar 将 PHP 这类非 Java 生态语言的服务接入 Spring Cloud
先起一个 Sidecar 服务,一个PHP服务一个应用,和PHP服务部署在同一台机子,通过 localhost 访问,这样就解决了网络开销,相当于本地进程间调用 Sidecar 服务比较简单, 1.这 ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验
Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...
- protobuf初体验
概念介绍 Protocol buffers 是google公司的与语言无关.与平台无关的.可扩张的为序列化话结构数据,就像xml一样,办事更加的小巧.快速.简单.Protocol buffers 目前 ...
- python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨
python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...
- Scala 深入浅出实战经典 第66讲:Scala并发编程实战初体验
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
随机推荐
- VS 2017 Git failed with a fatal error的解决办法
前几天,满怀欣喜的从VS2015更新到了VS2017,经过这几天的试用,整体来说感觉还是挺不错的.昨天推送项目到远程服务器的时候,发现出现了推送失败的错误,错误如图: 按照提示,我看到输出窗口的输入内 ...
- java 基础知识三 java变量
java 基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...
- 【Scala】Scala之Traits
一.前言 前面学习了Scala中包和导入的相关知识点,接着学习Traits(特质) 二.Traits Scala的特质与Java的接口基本相同,当遇到可以使用Java接口的情形,就可以考虑使用特质,S ...
- 使用 Http 的 Get 方式读取网络数据
作为移动平台的应用,一定避免不了与网络交换数据,不论是读取网页数据,还是调用API接口,都必须掌握Http通信技术 代码如下: package zw1; import java.io.Buffered ...
- redis 字典
redis 字典 前言 借鉴了 黄健宏 的 <<Redis 设计与实现>> 一书, 对 redis 源码进行学习 欢迎大家给予意见, 互相沟通学习 概述 字典是一种用于存储键值 ...
- 实时监听input标签输入 实时监听文本框输入 避免中文输入法无法触发onkeyup事件的问题
前言: 对于实时监听输入,这种需求大多数都是用于一个联想字提醒,智能提醒.大家都知道onkeydown,onkeypress,onkeyup的在监听中文输入法或者右键粘贴的时候都存在一些弊端,不是那么 ...
- CentOS 'mysql/mysql.h': No such file or directory
需要安装mysql-devel # yum install mysql-devel
- 安卓Native和H5页面进行交互
安卓Native和H5页面进行交互 1.H5页面调用安卓Native界面 1)通过给webView添加JsInterface,安卓提供接口,让H5来进行调用 a)安卓写一个类,里面的方法需要用通 ...
- ABP入门系列(16)——通过webapi与系统进行交互
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 上一节我们讲解了如何创建微信公众号模块,这一节我们就继续跟进,来讲一讲公众号模块如何与 ...
- jdk源码剖析五:JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
目录 1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4.总结 ========正文分割线===== 一.背景 1.1 永久代(PermGen)在哪里? 根 ...