zoukankan      html  css  js  c++  java
  • Kotlin基本语法和使用

         

    • Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性。
    • Kotlin是使用Java开发者的思维被创建的,Intellij作为它主要的开发IDE。对于 Android开发者,有两个有趣的特点:
    • 对Java开发者来说,Kotlin是非常直觉化的,并且非常容易学习。语言的大部 分内容都是与我们知道的非常相似,所以能迅速地掌 握它。
    • AndroidStudio作为目前最流行的Android开发工具,能够非常完美地理解、编译运行Kotlin代码。AndroidStudio 3.0之后已经完美支持kotlin

          1.下面是AndroidStudio的配置 

       1.1 在Project对应的build.gradle文件中添加如下代码:

                ext.kotlin_version = '1.1.2-4' //kotlin版本号

           classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 

               1.2 在module对应的build.gradle文件 中添加代码::

                添加插件 apply plugin: 'kotlin-android' 

                添加依赖库 compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

                重新build project就可以使用kotlin了。

      2.下面说下kotlin的基本语法(借鉴了Kotlin的官网文档)

            基本类型Basic Types

       2.1 Number类型

        

                定义变量

        val a: Int = 10000

        val boxedA: Int? =

        val b: Byte = 1

        每个Number类型的变量支持如下方法进行转换

        

        如:val i: Int = b.toInt()

       2.2 Operations

        如 val x = (1 shl 2) and 0x000FF000

         

           2.3 Characters

         字符型 定义如:val c: Char = 'C'

        2.4 Booleans

        布尔类型 定义如:val b: Boolean = false;

       2.5 Arrays 

        数组类型 定义如:val x: IntArray = intArrayOf(1, 2, 3)

      2.6 Strings

        字符串类型 定义如:val s = "Hello, world"

      

      3.基本语法

      3.1 if语句

      

        3.2 when语句(替代了java里的switch)

      

       3.3 for循环语句

      

      循环遍历集合collection里面的数据 并输出

       3.4 while 和 do...while语句和java类似

      

     4. 方法的定义

      格式如:fun 方法名(参数名 :参数类型):返回值类型{

          }

       比如:

      

      我们还可以给参数设置默认值 如:

      fun read(b: Array<Byte>, off: Int = 0, len: Int = b.size()) { ... }

      5. 类的定义

      格式如:class 类名{

          }

      在Kotlin中,一个类有一个primary constructor,一个或多个secondary constructors。primary constructor 属于类头部分,它在类名之后。

      

      如果primary constructor没有任何注解或者指示符,constructor关键字可以被省略。

      

           相反,如果primary constructory有注解或者可见的指示符,constructor是必须的。

      

      primary constructor不能包含任何的代码,初始代码可以放在初始块中,初始化代码块以init关键字开头。

      

      需要注意的是,在主构造函数里,可以直接用这些参数变量赋值给类的属性,或者用构造代码块来实现初始化。

      

      Secondary Constructors

      除了primary constructory,还有secondary constructors,同样也是constructor开头,位于类体中。 
      值得说明的是,如果primary constructory和secondary constructors同时存在,每个secondary constructor需要委托到primary constructor中去,或者间接通过另一个secondary constructors来委托。使用方法就是使用            this,表示委托到本类的另一个构造函数中。

      

      如果非抽象的类没有声明任何的构造函数,它默认继承一个没有任何参数的公有构造器,这个跟Java中的默认构造器类似。如果希望它继承的是一个私有的构造器,就需要显示的指明。

      

      创建类的对象实例我们可以这么实现

      val invoice = Invoice()

      val customer = Customer("帅气的码农")

      6. 类的继承

       用“:”冒号实现类的继承

       定义一个父类 Person

       open class Person(age: Int)  //open关键字跟Java中的final是相反

       子类继承

       class Child(age: Int) : Person(age)

       如果父类没有primary constructor,子类的每个secondary constructor在右边使用super来对它进行初始化。

       class Child : Person {

        constructor(ctx: Context) : super(ctx) { }

        constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) { }

        }

      7. 方法重写

       重写成员函数

       对于可以重写的函数,都需要显示的指明,使用的是open关键字。如果没有,在子类中声明跟父类相同的方法是非法的。

       open class Person {

         open fun v() {}

         fun v() {}

          }

       class Child() : Base() {

          override fun v() {}

        }

      在子类中被标记为override的成员函数本身也是可以被重新的,也就是open的,如果希望它禁止被重写,需要使用final关键字。

          重写规则

          如果一个类继承自多个类,并且它的这些父类都有同一个可以重写的函数,那么这个类必须重写这个函数并且提供它自己的实现,另外在子类中指示父类的方法是super<A>,A为父类类名,这样就可以指示不同的父类            了。

     8. 抽象类

      抽象类

      跟Java一样,使用abstract关键字。

     9. Companion Objects

      Kotlin 移除了 static 的概念。通常用 companion object 来实现类似功能。

      我们在 Activity 定义一个静态类型的 string,名叫TAG,和一个启动 Activity 的静态方法:

      

      我们用kotlin可以这么写:

      

      好了 今天先介绍这么多 kotlin还有很多关键字和语法操作符没有介绍到,后续更新!!!

  • 相关阅读:
    std thread
    windows更新包发布地址
    How to set up logging level for Spark application in IntelliJ IDEA?
    spark 错误 How to set heap size in spark within the Eclipse environment?
    hadoop 常用命令
    windows 安装hadoop 3.2.1
    windows JAVA_HOME 路径有空格,执行软连接
    day01MyBatisPlus条件构造器(04)
    day01MyBatisPlus的CRUD 接口(03)
    day01MyBatisPlus入门(02)
  • 原文地址:https://www.cnblogs.com/limingblogs/p/7094652.html
Copyright © 2011-2022 走看看