kotlin历程

  1. 2011年7月,JetBrains推出Kotlin项目,这是一个面向JVM的新语言
  2. 2012年2月,JetBrains以Apache 2许可证开源此项目
  3. 2016年2月15日,Kotlin v1.0发布。这被认为是第一个官方稳定版本,并且JetBrains已准备从该版本开始的长期向后兼容性
  4. 2017年,Google宣布在Android上为Kotlin提供一等支持

kotlin的优势

  1. 比java 更快

如下:创建1000000 个对象

public class JPerson {public JPerson(String name, Integer age, Integer sex) {this.name = name;this.age = age;this.sex = sex;}private String name ;private Integer age;private Integer sex ;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex = sex;}}

执行结果

public class ReflectDemo {public static void main(String[] args) throws InterruptedException {int i =0;long start = System.currentTimeMillis();while (i<1000000){JPerson jPerson = new JPerson("zhangsan",1,1);i++ ;}long end = System.currentTimeMillis();System.out.println("java本次耗时:"+(end-start));}}
data class KPerson(val name: String, val age: Int, val sex: Int)fun main(args: Array<String>) {var i = 0val start = System.currentTimeMillis()while (i < 1000000) {val kPerson = KPerson("张三", 1, 1)i = i.inc()}val end = System.currentTimeMillis()println("kotlin本次耗时:${(end - start)}")}

执行结果


3. 比java 语法更简洁、下面是一些简单示例,对kotlin 语法不太理解没关系、后续会对kotlin有详细讲解文章

//Java
System.out.print("hello world");
System.out.println("hello world");
//Kotlin 省略 System.out
print("hello world")
println("hello world")//Java
String name = "hello world";
final String name = "hello world";
//Kotlin 自动类型推断
var name = "hello world"
val name = "hello world"//Java
if (text != null) {int length = text.length();
}
//Kotlin 省略if 判断以及括号,可以使用it代替text
text?.let {val length = it.length
}//Java
String firstName = "Android";
String lastName = "Architect";
String message = "My name is: " + firstName + " " + lastName;
//Kotlin 直接使用插值运算符
val firstName = "Android"
val lastName = "Architect"
val message = "My name is:$firstName$lastName"//Java
String text = "First Line\n" +"Second Line\n" +"Third Line";//Kotlin 写法更加优雅
val text = """|First Line|Second Line|Third Line""".trimMargin()//Java
Car car = (Car) object;
//Kotlin 使用as 转换 而且转换后后续无需再次转换
var car = object as Car
car.name  // 可以直接使用car 属性//Java
int score = // some score;
String grade;
switch (score) {case 10:case 9:grade = "Excellent";break;case 8:case 7:case 6:grade = "Good";break;case 5:case 4:grade = "OK";break;case 3:case 2:case 1:grade = "Fail";break;default:grade = "Fail";
}//Kotlin
var score = // some score
var grade = when (score) {9, 10 -> "Excellent"in 6..8 -> "Good"4, 5 -> "OK"in 1..3 -> "Fail"else -> "Fail"
}// labamda表达式 Java 8+
cars.stream().filter(car -> car.speed > 100).forEach(car -> System.out.println(car.speed));//Kotlin
cars.forEach {println(it.speed)
}cars.filter { it.speed > 100 }.forEach { println(it.speed)}//Java  静态方法,私有构造比较
public class Utils {private Utils() {// This utility class is not publicly instantiable}public static int getScore(int value) {return 2 * value;}}//Kotlin
class Utils private constructor() {companion object {fun getScore(value: Int): Int {return 2 * value}}
}
// java 对象声明
public class JPerson {public JPerson(String name, Integer age, Integer sex) {this.name = name;this.age = age;this.sex = sex;}private String name ;private Integer age;private Integer sex ;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex = sex;}}// kotlin
data class KPerson(val name: String, val age: Int, val sex: Int)
  1. 让它比Java更安全,能够静态检测常见的陷阱。如:引用空指针

  2. 更高级特性,比如运算符重载,扩展函数

运算符重载 对象可以-加减乘除了

data class Point(val x: Int, val y: Int) {operator fun plus(other: Point) = Point(x + other.x, y + other.y)operator fun plus(value: Int) = "toString:${Point(x + value, y + value)}"
}fun main(args: Array<String>) {val p1 = Point(1, 2)val p2 = Point(3, 4)println(p1 + p2)println(p1 + 3)
}/*
Point(x=4, y=6)
toString: Point(x=4, y=5)
*/

扩展函数,person 类没有order 这个函数,却可以在类的外部给其声明方法


6. 支持协程.让开发更简单
下面并行代码、如果串行执行需要5s,实际执行结果只需要2s、也就是单个任务最大耗时,并行代码比java 简单

    @Testfun checkRunBlocking() {val start = System.currentTimeMillis()runBlocking {launch {println("launch1")delay(1000)
//                Thread.sleep(1000)println("launch1 finished")}launch {println("launch2")delay(1000)
//                Thread.sleep(1000)println("launch2 finished")}launch {println("launch2")delay(1000)
//                Thread.sleep(1000)println("launch2 finished")}launch {println("launch2")delay(1000)
//                Thread.sleep(1000)println("launch2 finished")}launch {println("launch2")delay(2000)
//                Thread.sleep(1000)println("launch2 finished")}}
//        Thread.sleep(1000)val end = System.currentTimeMillis()println("本次耗时:${end - start}")}

  1. Kotlin可以编译成Java字节码,也可以编译成JavaScript,前后端可公用一套模型 、后面会单独创建一个项目来讲解这块内容

仓库

 https://gitcode.net/mid120/kotlin


针对本文章,录制了视频:

kotlin一时爽,一直用一直爽

总结

从java 转kotlin 刚开始觉得kotlin语法很怪异,比如每行最后不需要加分号,但总是莫名的加上,结果idea 提示是灰色,然后又把分号干掉。然后就是简单写法、很容易让代码看起来是声明方法,实际是调用方法。再加上项目压力,很容易写出一半是kotlin 一半是java 代码。但是时间长久之后,慢慢发现kotlin的简单写法,会干掉大部分java代码,公司项目重构就是用kotlin 替换java ,代码直接少了75%,相当给力。所以,kotlin还是非常优秀的语言,抓紧时间学习吧

初识kotlin(初用kotlin一时爽、一直用一直爽)相关推荐

  1. Kotlin系列之Kotlin初体验

    这一篇我们开始Kotlin代码之旅,一步步入门Kotlin. 一.Kotlin开发工具 Kotlin语言在开发之初,它的语言和插件工具是同步开发的. 这里推荐IntelliJ IDEA15及以上,ID ...

  2. 初识未来趋势:Java与Kotlin;EclipsE与IntelliJ

    Kotlin是JetBrains的一种新的编程语言.它首次出现在2011年,JetBrains推出了名为"科特林"的项目. Kotlin是开源语言. 基本上像Java一样,C和C ...

  3. android kotlin面试题,Kotlin面试25题

    大家好,这一期呢,我们谈一下kotlin的面试题. 第1题,什么是kotlin? kotlin是静态类型的编程语言,运行于jvm之上. 第2题, 是谁开发了kotlin? kotlin是由jetbra ...

  4. 【刚好遇见Kotlin】使用Kotlin开发——搭建Kotlin 编译环境

    使用Kotlin开发--搭建Kotlin 编译环境 这篇博文主要帮助大家搭建Kotlin的开发环境. Hello world 当我们准备kotlin的第一个程序HelloWorld时,我们首先要去下载 ...

  5. Kotlin学习——了解Kotlin

    Kotlin学习--了解Kotlin Kotlin的历史 Kotlin是由JetBrains公司开发设计(就是制作IDEA,与PYCharm等顶级IDE的公司) Kotlin2011年公布第一版,20 ...

  6. kotlin android 4,Kotlin Android Extensions: 与 findViewById 说再见 (KAD 04)

    时间:Aug 16, 2017 原文链接:https://antonioleiva.com/kotlin-android-extensions/ 在 Kotlin1.1.4版本 发布后,原作者依据 K ...

  7. 【2023最新】Kotlin基础教程 Kotlin Basics 2 第二阶段:Sold! 2.4 【信息单位】Units of information

    [2023最新]Kotlin基础教程 Kotlin Basics 文章目录 [2023最新]Kotlin基础教程 Kotlin Basics 2 第二阶段:Sold! 2.4 [信息单位]Units ...

  8. Kotlin学习笔记--Kotlin之集合

    Kotlin学习笔记--Kotlin之集合 集合类 1. List 集合 1.1 不可变list 1.2 可变list MutableList 1.3 集合遍历 1.4 List的操作函数 1.5 l ...

  9. Kotlin Jetpack 实战: Kotlin 基础 | 开发者说·DTalk

    本文原作者: 朱涛,原文发布于: 朱涛的自习室 https://mp.weixin.qq.com/s/MSbSPeWNlM5PJCFmLg2SVQ 背景 近几年,Android 相关的新技术层出不穷. ...

最新文章

  1. GitHub上7000+ Star的Python常用代码合集
  2. 蓝桥杯C++ AB组辅导课
  3. Nat. Commun. | msiPL:质谱数据分析的新工具
  4. java web 默认页面配置文件_Tomcat中配置全局的错误页面(如404)+删除Tomcat中webapps目录下的自带项目,防止Tomcat默认文件泄露...
  5. 013_JavaScript函数
  6. uni-app小程序v-show内容始终不显示
  7. php use,php use和include区别总结
  8. Python之基础练习代码
  9. html5 iframe 属性,html中关于iframe的allowTransparency属性的详解
  10. Jsp+Ssh+Mysql+Redis实现的Java Web订餐点餐
  11. Naïve UI——一个 Vue 3 组件库
  12. spring.xml从外部文件引入数据库配置信息
  13. Mesos + Marathon + Chronos + Docker环境安装
  14. 学Python必看,Python中encode(),decode()的本质
  15. 2019年上半年 系统分析师 论文 真题
  16. JGIT使用的常见问题
  17. 超级邮件群发代理服务器设置,超级邮件群发教程
  18. matlab的fft点数,MATLAB快速傅里叶变换(fft)函数详解
  19. Kafka的安装与配置
  20. 做自媒体如何快速实现财务自由

热门文章

  1. 写个续集,填坑来了!关于“Thread.sleep(0)这一行‘看似无用’的代码”里面留下的坑。
  2. 威联通架设php网站_PHP个人网站架设全攻略_PHP
  3. 华为Android面试真题解析,技术详细介绍
  4. Window10配置PHPnow
  5. 【linux】解决设置CentOS7虚拟机使用静态IP的常见错误解决方案
  6. Mac动作冒险游戏:尘埃幸福的轨迹 for Mac
  7. 谷歌相机android4,谷歌相机10.0版本 7.4.200.316937482 安卓版
  8. 网站优化-减少DNS查询
  9. css3 html5动画特效
  10. 基于MTK 的 TP 驱动分析