为什么使用kotlin可以节省开发时间
前言:.kotlin是一门语言,光靠一篇文章要入门不太现实,所以这篇文章重点讲的是kotlin相对于java的一些特性和这些特性带来的好处.
一、简单介绍
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源,idea也是这个公司开发的。
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行,kotlin可直接在idea里面转为java。
在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
二、优点(重点)
用java用得好好的,为什么要用kotlin呢?这里只讲关键的几个点,还有其他特性有兴趣的话可以去深入了解。
1、简洁性
其实为什么要强调简洁性呢,因为代码量越少,bug出现的概率就越低。如果一个方法需要大量的代码去实现,后面看的人也不好理解和维护。
1.1、变量
变量通过var关键字定义,常量通过val关键字定义.既支持类型推倒也支持显示声明类型,大多数情况下都是用类型自动推倒。
var intVar = 1 // 通过取值可以自动推倒出变量的类型
var stringVar: String = "abc" // 也可以显式声明变量类型
val INT_VALUE = 1 // 使用val关键字定义常量
1.2、数据类
数据类是kotlin一个可明显看出减少代码量的特性。
// 数据类,除了有name和age两个成员变量之外还自动生成了equals,hashCode,toString等方法
data class Person(var name: String, var age: Int)
只需要这一行代码,就相当于java中一个实体类。
1.3、集合
不可变list
val list = listOf("a","b","c")
可变list
val list = mutableListOf("a","b","c")
其他集合也同理,而java要实现相同的功能需要new,再逐一set进去。
1.4、字符串拼接
val info = "name:$name,age:$age"
直接在变量前加$
1.5、lambda
kotlin中的lambda语法再加上高阶函数的使用,可把原来几十行代码精简为几行代码,但初学时会难以理解。
fun getNumResult(result: (Int, Int) -> Int): Int {
return result(1,2)
}
var value = getNumResult{ a, b -> a * b }
上面代码就相当于一个实现了乘法的方法。
val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
list.filter { it%2==0 } // 过滤掉奇数
.map{ it*it } // 平方
.sortedDescending() // 降序排序
.take(3) // 取前 3 个
.forEach { println(it) } // 遍历, 打印
2、安全性
java中虽然有@Nullable @NotNull等注解。但是不会在编译期起作用,而是在运行期抛出异常。kotlin在声明变量的时候,可以指定变量是否为空,调用可为空对象时,需要进行空判断。
var mNullable: Any? = null 可空
var mNonNull: Any = XXX 非空
3、无缝衔接java
当然,一个语言就算做的再好,但是没有一个健全的生态的话是很难被大众接受的.kotlin能够火起来,甚至被谷歌爸爸钦定为安卓的官方推荐语言.一个很重要的原因就是它可以无缝与java相互调用.以前写的java代码不用任何处理就能直接在kotlin中使用,而java也能无缝调用kotlin代码.
实际上在安卓中,编译的时候kotlin代码就会被编译成java代码,所以它们其实是等价的.
三、缺点与总结
1、静态代码分析工具的缺乏和成熟设计模式的缺乏
2、成熟的工具类较少
3、学习成本较高,特别是高阶函数
4、接口没有重载
总结:使用kotlin写某个比较少人需要维护的服务还是挺不错的,为什么强调比较少人需要维护.因为学习一门新语言需要学习成本,不能要求每个人都懂,但是用kotlin来写确实是可以减少开发时间,虽然原生的kotlin工具类少,但可以调用java的工具类,所以实际用起来还是不错的。
为什么使用kotlin可以节省开发时间的更多相关文章
- android开发时间和日期的代码实现工具类(一)
android开发时间和日期工具类的代码实现: package com.gzcivil.utils; import android.annotation.SuppressLint; import an ...
- 用智能TFT液晶模块这种串口屏做产品界面设计太简单了,大大的节省了开发时间
随着科技的发展,TFT液晶显示屏在我们日常中可以随处可见. 工业设备上的显示也逐渐由段式显示.黑白显示转向彩色的TFT液晶显示屏. 普通的TFT液晶显示屏由于开发起来比较麻烦, 需要嵌入式工程时写程序 ...
- (转)20 个大大节省你时间的 HTML5 开发工具
Rendera 如果你希望有个环境可以测试.浏览和体验各种不同的 CSS/HTML 和 JavaScript 代码,Rendera 为你提供了实时的运行结果.类似 RunJS. Patternizer ...
- 20个大大节省你时间的HTML5开发工具
Rendera 如果你希望有个环境可以测试.浏览和体验各种不同的 CSS/HTML 和 JavaScript 代码,Rendera 为你提供了实时的运行结果.类似 RunJS. Patternizer ...
- 使用Kotlin优雅的开发Android应用
来源:https://juejin.im/post/5915c0a744d904006c4e3bcd demo下载地址:https://github.com/xiehui999/KotlinForAn ...
- Java与Kotlin, 哪个是开发安卓应用的首选语言?
Java是很多开发者创建安卓应用的首选语言.但它在 Android 界的领导地位正受到各种新语言的挑战,Kotlin就是其一.虽然Kotlin最近才开始受到热捧,但有为数不少的人相信 Kotlin 在 ...
- android 开发 时间选择器TimePicker的使用
android系统自带时间控件:DatePicker 日期显示控件 DatePickerDialog 日期对话框控件TimePicker 时间显示控件 TimePickerDialog 时间对话框控件 ...
- 使用Kotlin进行Android开发
Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者.Java是世界上使用最多的编程语言之一,当其他编程语言为更加便于开发者使用而不断进化时,Java并 ...
- Java 项目热部署,节省构建时间的正确姿势
上周末,帮杨小邪(我的大学室友)远程调试项目.SpringBoot 构建,没有热部署,改一下就得重启相关模块.小小的 bug ,搞了我一个多小时,大部分时间都还在构建上(特么,下次得收钱才行).我跟他 ...
随机推荐
- Vue.js 第1章 Vue常用指令学习
今日目标 能够写出第一个vue应用程序 能够接受为什么需要学vue 能够使用指令 能够通过指定完成简单的业务(增加删除查询) 能够理解mvvm 为什么要学习vue 企业需要 可以提高开发效率 实现vu ...
- 22-1 rbac权限设计
一 表结构设计 from django.db import models # Create your models here. from django.db import models # Creat ...
- @topcoder - SRM697D1L3@ ConnectedStates
目录 @description@ @solution@ @accepted code@ @details@ @description@ 有n个城市,每个城市有个权值wi,任意两个城市i,j之间的道路数 ...
- Bitmap的recycle问题
虽然Android有自己的垃圾回收机制,对于是不是要我们自己调用recycle,还的看情况而定.如果只是使用少量的几张图片,回收与否关系不大.可是若有大量bitmap需要垃圾回收处理,那必然垃 ...
- Python的unittest拓展和HTMLReport SKIP报表扩展
C:\Python27\Lib中修改unittest内容 unittest 在init中添加Myskip代码: __all__ = ['TestResult', 'TestCase', 'TestSu ...
- svg和canvas比较以及svg简单介绍
文章地址:https://www.cnblogs.com/sandraryan/ 什么是svg 可缩放矢量图形(Scalable Vector Graphics) 1. 一种使用XML描述的2D图形语 ...
- Python--day41--事件和信号量之模拟连接数据库并在连接三次后抛出连接超时异常
#事件被创建的时候#False状态 #wait()阻塞#True状态 #wait() 非阻塞#clear 设置状态为False#set 设置状态为True #数据库 --- 文件夹#文件夹里有好多ex ...
- CCPC 2018 吉林 H "LOVERS" (线段树)
---恢复内容开始--- 传送门 参考资料: [1]:https://blog.csdn.net/mmk27_word/article/details/89788448 题目描述: The Fool ...
- 2019-8-6-在-Gitlab-开启-MatterMost-机器人
title author date CreateTime categories 在 Gitlab 开启 MatterMost 机器人 lindexi 2019-8-6 19:42:1 +0800 20 ...
- linux 手动睡眠
在 Linux 内核的之前的版本, 正式的睡眠要求程序员手动处理所有上面的步骤. 它是一 个繁琐的过程, 包含相当多的易出错的样板式的代码. 程序员如果愿意还是可能用那种方 式手动睡眠; <li ...