Kotlin初探

前几天看到新闻,Google将Kotlin语言作为Android应用开发的一级语言, 与Java并驾齐驱, 这则消息在开发界一下就炸开了锅( 好像平息的很快。。。)! 连Google的亲儿子go语言也没有这种待遇。Kotlin是什么鬼,感觉隐隐约约好像在哪里见过啊,对IDEA新建工程时可以看到。

大名鼎鼎的Java IDE IntelliJ提供商JetBrains开发的,而且是开源的。

看到这里我再也淡定不住了,决定去一探究竟,哥以前学Java可是同时打着J2EE和Android的主意,这下Java在Android平台苗头不太对,得去学习学习Kotlin才能安心。

官网的简单介绍:Kotlin是针对现代对平台应用的静态类型编程语言,100%可以与java?和Android?互操作。Kotlin可以编译成Java字节码在JVM上运行,在安卓设备上运行,也可以编译成Javascript,在浏览器运行,这是要一统江湖的节奏吗?

老规矩,Hello World!跑起来,使用IDEA2016就不用去搭建开发环境了,直接开搞了。

package com.newstart.kotlin

fun main(args: Array<String>) {
    print("Hello World!")
}

和Java区别还是有一点大的,mian方法是包级别的,Java是要在类里,参数声明是:参数名:参数类型,简洁了好多。

为什么选择 Kotlin?简约、安全、互操作性、工具友好

  • 简约

大大减少样板代码的数量,一行代码搞定POJO包括getters,setter,equals(), hashCode(),toString() 和copy()等方法。(copy类似clone,但是比clone强大)

data class User(var name: String, var age: Int, var sex: String)

fun main(args: Array<String>) {
    var user = User("代码如此多娇", 27, "man")
    println(user.name)
    println(user.age)
    println(user.sex)
    println(user)
}

fun getUser(): User {
    return User("代码如此多娇", 27, "man")
}

是不是比Java代码简洁了好多?支持lambda表达式,过滤list中等于"l"的元素。

fun main(args: Array<String>) {
    var list1 = listOf("h", "e", "l", "l", "o")
    var list2 = list1.filter { it != "l" }
    println(list2)
}

lambda表达式Java8也有就没有什么对比啦!快速简单的构建一个单例,这个就真的是简单粗暴了。

object SingletonDemo {
    var username: String = "test"
    var pasword: String = "111"
}

使用object声明单例类。

  • 安全

Kotlin对比于Java的一个最大的区别就是它致力于消除空引用所带来的危险。NullPointerException(NPE)应该是开发中遇到的最多的一种运行时异常了。

fun test1(){
    var a: String = null//编译错误,默认是不可为null的

    var b: String? = null //可以为空
    println(b.length) ////编译错误
}

类型自动检测

//如果你在代码中已经判断类型符合了
//Kotlin编译器会自己进行类型转换
fun test2(user: Any) {
    if (user is User)
        print(user.age)
}
  • 互操作性

使用跑在JVM上的任何现有库,因为有 100% 的兼容性,包括 SAM 支持,看到这个我就放心了。

package com.newstart.kotlin

import org.apache.commons.lang3.StringUtils

fun main(args: Array<String>) {
    //val声明不可变变量
    val str: String = "a,b,c,d,e"
    val array = StringUtils.split(str, ",")
    for (s in array) {
        print(s)
    }
}

  • 工具友好

这个算不算JetBrains的一波强势广告?IDEA最好的Java IDE 没有之一。

其他

  • 带返回值的方法
fun getUser(): User {
    return User("代码如此多娇", 27, "man")
}
  • When
when (map["a"]) {
    ‘1‘ -> println("1")
    ‘2‘ -> println("2")
    is Char -> println("Char")
    !is String -> println("Not a string")
    else -> println("Unknown")
}
  • Map
val map = hashMapOf<String, Char>()
map.put("a", ‘1‘)
map.put("b", ‘b‘)
for ((key, value) in map) {
    println("key = $key, value = $value")
}
  • 解构声明,将类解构成变量
var user = User("代码如此多娇", 27, "man")
var (name, age, sex) = user
println("$name,$age,$sex")
  • 属性委托-懒加载
class LazySample {
    val lazy: String by lazy {
        println("computed!")
        "my lazy"
    }
}
fun main(args: Array<String>) {
    val sample = LazySample()
    println("lazy = ${sample.lazy}")
    println("lazy = ${sample.lazy}")
}
输出
computed!
lazy = my lazy
lazy = my lazy

属性委托-观察,Map属性委托等等等等......

想要更深入的了解可以去他的官网https://try.kotlinlang.org,官网一系列可以在线编写运行的demo和教程,如果你是Android开发者赶紧行动起来吧,Google支持的没有错。搞J2EE的就可以持观望态度了,比如说我。

时间: 2024-11-09 22:36:06

Kotlin初探的相关文章

Java的进化? Kotlin初探与集成Android项目

欢迎Follow我的GitHub, 关注我的CSDN. Kotlin是基于JVM的编程语言, 由JetBrains公司开发, 目前已经开源. IntelliJ IDEA, PyCharm, Android Studio等IDE, 就是出自于JetBrains公司. 介绍: Statically typed programming language for the JVM, Android and the browser. 100% interoperable with Java? 用于JVM,

当Kotlin遇见RxJava多数据源

温馨提醒 阅读本文最好有Kotlin基础,若没有基础,可参考之前文章Kotlin初探,使用Kotlin优雅的开发Android应用,以及RxJava基础(本文基于RxJava2),当然我也会尽可能详细解释让你顺利阅读本文. 源码传送门 写在前面 最近几天回过头,看了之前的总结RxJava操作符系列,感觉对Rxjava多数据源的处理不是很理解,所以在总结学习一波.大家都知道,最近Kotlin语言一直占据热搜榜,褒贬不一,但我想说,不管有什么想法都要抛在脑后,毕竟Google爸爸出手,你不情愿也要跟

Kotlin 官网 文档 教程 视频 资源

重要资源 Kotlin 官网(官网源码.英文文档) Kotlin 中文文档 系列教程:Kotlin for android developers(Summary.整理) Kotlin on GitHub (2017.5.28 有14K星星) Kotlin 系列视频教程 掘金kotlin社区 开始用 Kotlin 之前 将 Kotlin 用于生产环境:你在犹豫什么?为什么我要改用 Kotlin?用 Kotlin 开发 Android 项目是一种什么样的感受?用 Kotlin 开发 Android

Kotlin学习资料

欢迎关注本人Github:https://github.com/itgoyo 里边会时刻更新一些最新最潮的技术文章 2017-5-18 Google I/O 大会指定Kotlin成为Android的官方开发语言 本项目地址:https://github.com/kotlinandroid/kotlin-for-android 欢迎大家?????? 以下是收集整理的Kotlin资料 Kotlin官方资料Github地址: [https://github.com/JetBrains/kotlin](

50 篇 Android 干货文章

转载:https://zhuanlan.zhihu.com/p/27404523 目录 热门技术 View 代码封装 源码分析 精进之路 热门技术 Kotlin初探Kotlin成了Google的亲儿子,现在赶紧来学学跟着google学习mvp架构跟着google学习mvp架构(clean篇)给初学者的RxJava2.0教程(一) :基本工作原理给初学者的RxJava2.0教程(二) :强大的线程控制给初学者的RxJava2.0教程(三) :map和flatMap操作符给初学者的RxJava2.0

android手机安全卫士、Kotlin漫画、支付宝动画、沉浸状态栏等源码

Android精选源码 轻量级底部导航栏 android手机卫士源码 android实现高仿今日头条源码 一个用Kotlin写的简单漫画App源码 android吐槽项目完整源码 实现可以滑动文字逐渐变色的TabLayout android实现将app隐藏加密功能的源码 android实现横向滚动的卡片堆叠布局 android仿支付宝的咻咻动画源码 android状态栏和沉浸式导航栏管理源码 Android优质博客 从BaseActivity与BaseFragment的封装谈起 这篇博客主要是从

即刻开始使用Kotlin开发Android的12个原因(KAD 30)

作者:Antonio Leiva 时间:Jul, 11, 2017 原文链接:https://antonioleiva.com/reasons-kotlin-android/ 这组文章已到最后了,它们是非常实用的.今天我想谈谈为什么我认为学习Kotlin是非常有趣的. 虽然, Kotlin现在已是官方支持的开发Android APP的编程语言,而你仍可能觉得没有足够的理由进行改变.在这些年以来,Java已经证明其能力,为什么要改变? 这是我认为转换到Kotlin不是一个冒险的赌注,而是你可以做的

进阶之初探nodeJS

一.前言 在"初探nodeJS"随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器. 今儿,再次看了该篇随笔,发现该随笔理论知识稍多,适合初级入门node,固萌生一个想法--想在该篇随笔中,通过一步步编写一个稍大一点的node示例,让我们在整体上更加全面地了解node. so,该篇随笔是建立在"初探nodeJS"之上的,固取名为"进阶之初探nodeJS". 好了,侃了这多,那么我们即将实现一个

Kotlin的android扩展:对findViewById说再见(KAD 04)

作者:Antonio Leiva 时间:Dec 12, 2016 原文链接:http://antonioleiva.com/kotlin-android-extensions/ 你也许已厌倦日复一日使用findViewById编写Android视图.或是你可能放弃它转而使用著名的Butterknife库.那么你将会喜爱Kotlin的Android扩展. Kotlin的Android扩展 Kotlin的Android扩展是Kotlin插件的正规插件之一,它无缝覆盖Activities的视图,Fra