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还有很多关键字和语法操作符没有介绍到,后续更新!!!

  • 相关阅读:
    oracle函数大全(转载)
    oracle的基本数据类型(转载)
    oracle 数据类型详解---日期型(转载)
    队列的链式存储结构
    在Lua里写unity游戏笔记
    NGUI-快捷键
    NGUI在线电子书---NGUI for Unity
    NGUI学习笔记-UISprite
    unity延时方法Invoke和InvokeRepeating
    NGUI-制作位图字体以及图文混排
  • 原文地址:https://www.cnblogs.com/limingblogs/p/7094652.html
Copyright © 2011-2022 走看看