zoukankan      html  css  js  c++  java
  • Kotlin重新学习及入门示例

    在2017和2018其实已经对Kotlin的基础语法进行了一些学习,但是!!如今已经是2019年,中间间断时间已经很长了,所以准备接下来从0再次出发深入系统完整的来审视一下该语言,毕境如今它的地位是越来越重要的,公司商用项目用Kotlin也越来越流行的,所以学好它是势在必行。

    初识Kotlin:

    首先还是上Kotlin的官网先对它有个大概的认识:

     

    先来看一下为啥要学习Kotlin的官方说明,其实也就是看一下它的优势:

    先来看第一个“Concise”特点,直接感受一下官方针对这个特点的代码说明:

    Concise

    Create a POJO with getters, setters, equals()hashCode()toString() and copy() in a single line:

    data class Customer(val name: String, val email: String, val company: String)
    

    【说明】:对于我们平常编写的Java实体对象,通常都会有getters,setters,equals(),hashcode(),toString(),通过自带的IDE工具生成,代码比较多,但是!!在Kotlin里面对于这样的常规代码一句话就可以搞定了,会自动为我们生成这些需要的代码,简洁么?

    Or filter a list using a lambda expression:

    val positiveNumbers = list.filter { it > 0 }
    

    【说明】:利用Lambda表达式来从集合中来过滤元素,当然Java8中也有Lambda,但是相比之下Kotlin的更加的简洁。

    Want a singleton? Create an object:

    object ThisIsASingleton {
        val companyName: String = "JetBrains"
    }

    【说明】:对于Java中单例的编写,通常都会有一个私有方法,然后再对外暴露一个getInstance()方法,比较繁锁,而在Kotlin中,爽!!

    接着来看“Safe”,也就是该语言用起来比较安全:

    下面具体来看一下安全体现在哪?

    Get rid of those pesky NullPointerExceptions, you know, The Billion Dollar Mistake

    var output: String
    output = null   // Compilation error【看到没,如果是用var声明的变量,被赋值为null的语会直接编译错误,将错误避免出现在生产环境中】
    

    Kotlin protects you from mistakenly operating on nullable types

    val name: String? = null    // Nullable type
    println(name.length())      // Compilation error【也是像name有可能为null,所以这句话也是直接在编译期间就标志出来错误了,而不是在运行才能知识】
    

    And if you check a type is right, the compiler will auto-cast it for you

    fun calculateTotal(obj: Any) {
        if (obj is Invoice)
            obj.calculateTotal()
    }

    继续看第三个特点:“Interoperable互操作”:

    具体表现:

    Use any existing library on the JVM, as there’s 100% compatibility, including SAM support.【对于JVM已经存在的库都是100%兼容的】

    import io.reactivex.Flowable
    import io.reactivex.schedulers.Schedulers
    
    Flowable
        .fromCallable {
            Thread.sleep(1000) //  imitate expensive computation
            "Done"
        }
        .subscribeOn(Schedulers.io())
        .observeOn(Schedulers.single())
        .subscribe(::println, Throwable::printStackTrace)
    

    Target either the JVM or JavaScript. Write code in Kotlin and decide where you want to deploy to

    import kotlin.browser.window
    
    fun onLoad() {
        window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"
    }

    最后一个就是工作的代码提示做得比较好,这个了解下既可:

    另外官网对有很好的学习指南,可以上这来自行学习:

    另外开方工具我们采用IntelliJ IDEA,Android Studio就是用的它,而自己学Kotlin的目的就是为了写Android程序,所以。。官网也介绍了其它的开发工具:

    好!对于Kotlin官方的了解先到这,下面则先编写一个非常简单入门的示例来直观的感受一下Kotlin的语言魅力。

    编写入门示例:

    首先打开IntelliJ IDEA,如下:

    然后新建一个工程:

    直接点完成我们的第一个Kotlin就创建好了:

    其中在扩展库中除了有JDK之外,还多了一个kotlin相关的包,如下:

    好,工程结构比较简单,接下来则新建一个kotlin的文件,如下:

    接下来写个能运行的HelloWorld,具体程序的含义先不用管:

    咋一看,跟我们熟悉的Java相比,貌似没有class了,而且System.out.println()也木有了,其实是有的,不过是在未来深入学习时才能知晓,先深究这么多。此外还有一有一个直观的区别,就是编写一行语句时后面没有“;”号了。

    好,接着再来改一下,来遍历一下集合中的元素,咋写呢?

    其中for循环的变量都不需要声明变量类型了,好简洁,这是因为该类型是可以推断出来的,很明显集合元素是Sring类型嘛。好,以前我们在JDK8中学习过Lambda表达式,所以还可以改用这种方式来遍历,如下:

    其中构造Consumer的方式好奇怪,跟Java还是不太一样的,之后会详细学习,对于Lambda表达式还可以用方法引用的方式,所以程序可以进一步改造之:

    HelloWorld这块就编写到这,里面有很多的疑问,木关系,未来会深挖,反正给人一个直观的认识就是感觉写Kotlin比写Java代码要简洁。

  • 相关阅读:
    南阳97
    南阳96
    南阳94
    南阳77
    南阳75
    南阳74
    南阳65
    一般图匹配
    466E
    hdu5057 分块处理,当数值大于数据范围时树状数组 真是巧 将大数据分为小数据来处理
  • 原文地址:https://www.cnblogs.com/webor2006/p/11182063.html
Copyright © 2011-2022 走看看